<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공부</title>
    <link>https://note-front-end.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 7 Jun 2026 18:37:32 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>야끼 소바</managingEditor>
    <item>
      <title>ssh 접속한 사람 잡기</title>
      <link>https://note-front-end.tistory.com/103</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;auditctl &lt;/span&gt;&lt;span&gt;-w&lt;/span&gt;&lt;span&gt; /usr/bin/ssh &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; x &lt;/span&gt;&lt;span&gt;-k&lt;/span&gt;&lt;span&gt; ssh_exec&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/usr/bin/ssh 를 감시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행되는 경우&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ssh_exec 라는 태그 적용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ausearch -k ssh_exec -i&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ssh_exec 라는 태그가 붙은 로그 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/103</guid>
      <comments>https://note-front-end.tistory.com/103#entry103comment</comments>
      <pubDate>Mon, 1 Jun 2026 17:36:42 +0900</pubDate>
    </item>
    <item>
      <title>Kroki 미적용 해결 - diagram proxy 미지원 문제</title>
      <link>https://note-front-end.tistory.com/102</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gitlab-docs.infograb.net/17.9/ee/administration/integration/kroki.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://gitlab-docs.infograb.net/17.9/ee/administration/integration/kroki.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1780288090941&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;GitLab 공식 기술 문서 한글판 by 인포그랩 | 인포그랩 | GitLab 기반 DevSecOps 구축,컨설팅,교육,CICD Pipe&quot; data-og-description=&quot;GitLab의 Selected 파트너 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 GitLab 공식 기술 문서의 한글판을 국내 최초로 제공합니다.&quot; data-og-host=&quot;gitlab-docs.infograb.net&quot; data-og-source-url=&quot;https://gitlab-docs.infograb.net/17.9/ee/administration/integration/kroki.html&quot; data-og-url=&quot;https://gitlab-docs.infograb.net&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/baNbdE/dJMb9b3Y3kD/06jNhf3alU6wScwi3Jd2dk/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/WWWzN/dJMb8QMjbGb/z5sDTV3i4LJ1ZSPO7Gz4wk/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/bW0cWy/dJMb9c9ESOP/5RMoAVdvu1IFiuqkgro2V1/img.png?width=1189&amp;amp;height=232&amp;amp;face=0_0_1189_232&quot;&gt;&lt;a href=&quot;https://gitlab-docs.infograb.net/17.9/ee/administration/integration/kroki.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gitlab-docs.infograb.net/17.9/ee/administration/integration/kroki.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/baNbdE/dJMb9b3Y3kD/06jNhf3alU6wScwi3Jd2dk/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/WWWzN/dJMb8QMjbGb/z5sDTV3i4LJ1ZSPO7Gz4wk/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/bW0cWy/dJMb9c9ESOP/5RMoAVdvu1IFiuqkgro2V1/img.png?width=1189&amp;amp;height=232&amp;amp;face=0_0_1189_232');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitLab 공식 기술 문서 한글판 by 인포그랩 | 인포그랩 | GitLab 기반 DevSecOps 구축,컨설팅,교육,CICD Pipe&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GitLab의 Selected 파트너 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 GitLab 공식 기술 문서의 한글판을 국내 최초로 제공합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gitlab-docs.infograb.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 문서를 접속하면 kroki 설정을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 kroki 로 작성한 diagram이 출력이 안되는 문제 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mermaid는 작동하나 다른 다이어그램이 출력이 안되는 상황&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;903&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yKSsP/dJMcacwyS4D/IDQHRd238jIeR18HmgVAi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yKSsP/dJMcacwyS4D/IDQHRd238jIeR18HmgVAi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yKSsP/dJMcacwyS4D/IDQHRd238jIeR18HmgVAi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyKSsP%2FdJMcacwyS4D%2FIDQHRd238jIeR18HmgVAi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;481&quot; height=&quot;658&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;903&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;curl도 제대로 나오고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;svg도 서버에서 제대로 지원함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kSVWo/dJMcagMwvuM/SMwfNZ8oQAznPzmkQMRNe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kSVWo/dJMcagMwvuM/SMwfNZ8oQAznPzmkQMRNe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kSVWo/dJMcagMwvuM/SMwfNZ8oQAznPzmkQMRNe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkSVWo%2FdJMcagMwvuM%2FSMwfNZ8oQAznPzmkQMRNe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;903&quot; height=&quot;185&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;185&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결 문제라고 해서 확인해보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 깃랩 버전에서는 diagram proxy를 지원을 안한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그전에 kroki는 마크다운 문법으로 작성한 다이어그램을 랜더링해주는 랜더링 서버이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitlab -&amp;gt; kroki -&amp;gt; mermaid 엔진 -&amp;gt; SVG/PNG 생성 -&amp;gt; GitLab 화면 표시&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitlab과 kroki간 통신도 확인했고 curl 을 이용하여 svg, png 도 잘 생성되는 것을 확인했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diagram proxy는 gitlab이 kroki 서버에서 직접 이미지를 가져와 사용자에게 보여주는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것이 지원되지 않는 경우 사용자가 직접 kroki 서버에 접근할 수 있어야 이미지를 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방화벽 설정으로 자체 kroki 서버에 접근 허용하고 확인해보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 출력이 잘 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;1064&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rMlVZ/dJMcajoOn3Z/vF7Y5EoCSIX0MrlBti5gOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rMlVZ/dJMcajoOn3Z/vF7Y5EoCSIX0MrlBti5gOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rMlVZ/dJMcajoOn3Z/vF7Y5EoCSIX0MrlBti5gOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrMlVZ%2FdJMcajoOn3Z%2FvF7Y5EoCSIX0MrlBti5gOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;945&quot; height=&quot;1064&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;1064&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>CI-CD/Gitlab</category>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/102</guid>
      <comments>https://note-front-end.tistory.com/102#entry102comment</comments>
      <pubDate>Mon, 1 Jun 2026 17:13:18 +0900</pubDate>
    </item>
    <item>
      <title>Failed to load API definition</title>
      <link>https://note-front-end.tistory.com/101</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;swagger에서 아래와 같은 에러 발생&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;336&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUq1r2/dJMcah4XY4C/t1OnH0ZozYSI4G6OUzkWQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUq1r2/dJMcah4XY4C/t1OnH0ZozYSI4G6OUzkWQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUq1r2/dJMcah4XY4C/t1OnH0ZozYSI4G6OUzkWQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUq1r2%2FdJMcah4XY4C%2Ft1OnH0ZozYSI4G6OUzkWQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;336&quot; height=&quot;160&quot; data-origin-width=&quot;336&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨테이너에서 확인해 보니 아래와 같은 로그를 발견했다.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Caused by: java.lang.NoSuchMethodError: &lt;/span&gt;&lt;/span&gt;&lt;span&gt;'java.lang.String io.swagger.v3.oas.annotations.media.Schema.$dynamicRef()'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;annotation과 core의 버전 불일치 문제라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jar에 있는 파일 목록을 살펴보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1774936906534&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root:  /# jar tf ./app.jar | grep -E &quot;swagger|springdoc&quot; 
BOOT-INF/lib/springdoc-openapi-starter-common-2.8.16.jar 
BOOT-INF/lib/springdoc-openapi-starter-webmvc-api-2.8.16.jar 
BOOT-INF/lib/springdoc-openapi-starter-webmvc-ui-2.8.16.jar 
BOOT-INF/lib/swagger-annotations-2.2.21.jar 
BOOT-INF/lib/swagger-annotations-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-core-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-models-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-ui-5.32.0.jar&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;swagger-annotation과 annotaion-jakarta 의 버전이 맞지 않았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2.2.21에는 $dynamicRef() 메서드가 없어서 발생한 사건으로 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2.2.21이 너무 낮은 버전이어서 2.2.43 으로 build.gradle에 추가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1f1f1f; color: #cccccc;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;dependencyManagement {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; dependencies {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dependency &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'io.swagger.core.v3:swagger-annotations:2.2.43'&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/101</guid>
      <comments>https://note-front-end.tistory.com/101#entry101comment</comments>
      <pubDate>Tue, 31 Mar 2026 15:11:04 +0900</pubDate>
    </item>
    <item>
      <title>Signoz 에러 Key not found</title>
      <link>https://note-front-end.tistory.com/100</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1243&quot; data-origin-height=&quot;815&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCzAUT/dJMcai9GbGT/KE5Wqklv9OdqxtqKReCK81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCzAUT/dJMcai9GbGT/KE5Wqklv9OdqxtqKReCK81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCzAUT/dJMcai9GbGT/KE5Wqklv9OdqxtqKReCK81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCzAUT%2FdJMcai9GbGT%2FKE5Wqklv9OdqxtqKReCK81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1243&quot; height=&quot;815&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1243&quot; data-origin-height=&quot;815&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Signoz 에서 로그 확인 시 필터링 에서 이슈가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터를 걸어주지 않으면 로그가 출력되지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터를 걸어주면 key not found 라고 하면서 로그가 출력되지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;docker exec -it signoz-clickhouse clickhouse-client &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT&amp;nbsp;DISTINCT&amp;nbsp;arrayJoin(mapKeys(resources_string))&amp;nbsp;AS&amp;nbsp;resource_key &lt;br /&gt;FROM&amp;nbsp;signoz_logs.distributed_logs_v2 &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;resource_key&amp;nbsp;ASC &lt;br /&gt;&lt;br /&gt;Query&amp;nbsp;id:&amp;nbsp;472d571d-1224-40ed-a66f-7a6f72afa1dd &lt;br /&gt;&lt;br /&gt;┌─resource_key────────────────┐ &lt;br /&gt;│&amp;nbsp;container.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;deployment.environment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;deployment.environment.name&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;host.arch&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;host.name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;os.description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;os.name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;os.type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;os.version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.command&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.command_args&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.executable.path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.owner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.pid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.runtime.description&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.runtime.name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;process.runtime.version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;service.instance.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;service.name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;service.version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;telemetry.distro.name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;telemetry.distro.version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;telemetry.sdk.language&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;telemetry.sdk.name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;│&amp;nbsp;telemetry.sdk.version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│ &lt;br /&gt;└─────────────────────────────┘&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 데이터는 잘 들어오는 것을 확인했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러가 없는 다른 signoz 서버와 비교했을때&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터가 똑같은 resource_key 컬럼으로 들어오고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때문에 필터를 걸어주지 않았을때 정상적으로 데이터가 출력되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다가 필터에 관련된 테이블을 발견했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;signoz_logs.distributed_logs_resource_keys&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 테이블에 위 테이블의 column 값들이 없어서 발생한 현상이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 아래와 같은 명령어로 resource_key를 확인해보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러가 없는 필터 key 값이 들어있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;SELECT DISTINCT&amp;nbsp; &amp;nbsp; name,datatype &lt;br /&gt;FROM&amp;nbsp;signoz_logs.distributed_logs_resource_keys &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Query id: af9ba0d2-7e72-4246-b8d5-0592c4159b2d &lt;br /&gt;┌─name────────────────────────┬─datatype─┐ &lt;br /&gt;│ container.id&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;│ string&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &lt;br /&gt;│ process.command&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ string&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &lt;br /&gt;│ process.command_args&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;│ string&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &lt;br /&gt;│ process.runtime.description&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ string&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &lt;br /&gt;│ service.instance.id&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ string&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &lt;br /&gt;│ service.version&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ string&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ &lt;br /&gt;└─────────────────────────────┴───────┘&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INSERT&amp;nbsp;INTO&amp;nbsp;signoz_logs.distributed_logs_resource_keys&amp;nbsp;(name,&amp;nbsp;datatype) &lt;br /&gt;VALUES&amp;nbsp;('os.name',&amp;nbsp;'string');&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 쿼리를 날려 데이터를 넣어&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;signoz_logs.distributed_logs_v2 테이블의 resource_keys와&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;signoz_logs.distributed_logs_resource_keys 테이블의 데이터를 맞춰주니 필터가 정상적으로 동작하는 것을 확인했다.&lt;/p&gt;</description>
      <category>오픈소스</category>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/100</guid>
      <comments>https://note-front-end.tistory.com/100#entry100comment</comments>
      <pubDate>Thu, 18 Dec 2025 10:45:01 +0900</pubDate>
    </item>
    <item>
      <title>깃랩 공식 변수</title>
      <link>https://note-front-end.tistory.com/99</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.gitlab.com/ci/variables/predefined_variables/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.gitlab.com/ci/variables/predefined_variables/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1765330651133&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Predefined CI/CD variables reference | GitLab Docs&quot; data-og-description=&quot;Predefined CI/CD variables reference Tier: Free, Premium, UltimateOffering: GitLab.com, GitLab Self-Managed, GitLab Dedicated Predefined CI/CD variables are available in every GitLab CI/CD pipeline. Avoid overriding predefined variables, as it can cause th&quot; data-og-host=&quot;docs.gitlab.com&quot; data-og-source-url=&quot;https://docs.gitlab.com/ci/variables/predefined_variables/&quot; data-og-url=&quot;https://docs.gitlab.com/ci/variables/predefined_variables/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.gitlab.com/ci/variables/predefined_variables/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.gitlab.com/ci/variables/predefined_variables/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Predefined CI/CD variables reference | GitLab Docs&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Predefined CI/CD variables reference Tier: Free, Premium, UltimateOffering: GitLab.com, GitLab Self-Managed, GitLab Dedicated Predefined CI/CD variables are available in every GitLab CI/CD pipeline. Avoid overriding predefined variables, as it can cause th&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.gitlab.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;:&lt;/span&gt; &lt;span&gt;'&lt;/span&gt;&lt;span&gt;($CI_PIPELINE_SOURCE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;merge_request_event&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$CI_MERGE_REQUEST_TARGET_BRANCH_NAME&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;master&quot;)'&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitlab-ci 에서 이와 같은 방식으로 실행하기 위험&lt;/p&gt;</description>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/99</guid>
      <comments>https://note-front-end.tistory.com/99#entry99comment</comments>
      <pubDate>Wed, 10 Dec 2025 13:24:27 +0900</pubDate>
    </item>
    <item>
      <title>랜섬웨어</title>
      <link>https://note-front-end.tistory.com/98</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1361&quot; data-origin-height=&quot;511&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zZ7io/btsQ5SQ8svq/pIFFuK8TWJGnjgdHKJhEF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zZ7io/btsQ5SQ8svq/pIFFuK8TWJGnjgdHKJhEF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zZ7io/btsQ5SQ8svq/pIFFuK8TWJGnjgdHKJhEF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzZ7io%2FbtsQ5SQ8svq%2FpIFFuK8TWJGnjgdHKJhEF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1361&quot; height=&quot;511&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1361&quot; data-origin-height=&quot;511&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.011 BTC = 1810334.87 원 이란다....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 해커라면 며칠 기다려서 181만원 받을바에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;40만원으로 하루에 3탕을 치겠다&lt;/p&gt;</description>
      <category>etc</category>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/98</guid>
      <comments>https://note-front-end.tistory.com/98#entry98comment</comments>
      <pubDate>Mon, 13 Oct 2025 11:29:54 +0900</pubDate>
    </item>
    <item>
      <title>ulimit -a</title>
      <link>https://note-front-end.tistory.com/97</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czFD9A/btsQvwzNKLd/i9vIkEAyCMxx7CI4f5desk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czFD9A/btsQvwzNKLd/i9vIkEAyCMxx7CI4f5desk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czFD9A/btsQvwzNKLd/i9vIkEAyCMxx7CI4f5desk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczFD9A%2FbtsQvwzNKLd%2Fi9vIkEAyCMxx7CI4f5desk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;467&quot; height=&quot;325&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;325&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- cor&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 418px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 40px;&quot;&gt;core file size&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 40px;&quot;&gt;프로그램이 크래시 했을 때 생성되는 core dump 파일의 최대 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 20px;&quot;&gt;data seq size&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 20px;&quot;&gt;프로세스의 데이터 세그먼트(힙 메모리) 크기 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 20px;&quot;&gt;scheduling priority&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 20px;&quot;&gt;프로세스의 우선순위 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 20px;&quot;&gt;file size&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 20px;&quot;&gt;생성가능한 단일 파일의 최대 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 20px;&quot;&gt;pending signals&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 20px;&quot;&gt;해당 사용자가 동시에 보낼 수 있는 보류 중인 시그널 수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 20px;&quot;&gt;max locked memory&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 20px;&quot;&gt;mlock()등을 통해 RAM에 고정 할 수 있는 메모리 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 20px;&quot;&gt;max memory size&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 20px;&quot;&gt;프로세스가 사용할 수 있는 최대 메모리 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 20px;&quot;&gt;open files&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 20px;&quot;&gt;한 프로세스가 동시에 열 수 있는 파일 디스크립터 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;pipe size&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;파이프(IPC)의 버퍼 크기 512바이트 * 숫자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;POSIX message queues&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;POSIX 메시지 큐에서 사용할 수 있는 최대 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;real-time priority&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;실시간 스케줄링 우선순위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;stack size&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;스택 메모리 크기 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;cpu time&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;프로세스가 사용할 수 있는 cpu 시간 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;max user processes&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;한 사용자가 동시에 실행할 수 있는 프로세스 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;virtual memory&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;가상 메모리 크기 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25.3488%; height: 17px;&quot;&gt;file locks&lt;/td&gt;
&lt;td style=&quot;width: 74.6512%; height: 17px;&quot;&gt;파일에 걸 수 있는 lock의 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/97</guid>
      <comments>https://note-front-end.tistory.com/97#entry97comment</comments>
      <pubDate>Thu, 11 Sep 2025 11:05:27 +0900</pubDate>
    </item>
    <item>
      <title>그누보드 - 라이센스(License) 내용에 동의하셔야 설치를 계속하실 수 있습니다</title>
      <link>https://note-front-end.tistory.com/96</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wszr8/btsPN7oFS0y/PWAStFakl2InG8qZywMw0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wszr8/btsPN7oFS0y/PWAStFakl2InG8qZywMw0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wszr8/btsPN7oFS0y/PWAStFakl2InG8qZywMw0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWszr8%2FbtsPN7oFS0y%2FPWAStFakl2InG8qZywMw0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;753&quot; height=&quot;454&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddO44U/btsPNn58Z1a/q0QC4ZHedib5qUE8UFb4Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddO44U/btsPNn58Z1a/q0QC4ZHedib5qUE8UFb4Y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddO44U/btsPNn58Z1a/q0QC4ZHedib5qUE8UFb4Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddO44U%2FbtsPNn58Z1a%2Fq0QC4ZHedib5qUE8UFb4Y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;612&quot; height=&quot;192&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;285&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baH590/btsPO4x0U38/rHSJgE7eIZNRyFHf8voE21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baH590/btsPO4x0U38/rHSJgE7eIZNRyFHf8voE21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baH590/btsPO4x0U38/rHSJgE7eIZNRyFHf8voE21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaH590%2FbtsPO4x0U38%2FrHSJgE7eIZNRyFHf8voE21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;285&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;285&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;php.ini 에서 에러 출력 활성화를 하고 확인해보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjCaYt/btsPMQnGEP5/voacoPsKa38bTpXExqDYH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjCaYt/btsPMQnGEP5/voacoPsKa38bTpXExqDYH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjCaYt/btsPMQnGEP5/voacoPsKa38bTpXExqDYH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjCaYt%2FbtsPMQnGEP5%2FvoacoPsKa38bTpXExqDYH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;397&quot; height=&quot;160&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 에러를 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;POST 값을 임시로 저장할 곳을 찾지 못해 생기는 일이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4kqj7/btsPQrFYHS9/wmIaqlB84kcftwh4UHJLa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4kqj7/btsPQrFYHS9/wmIaqlB84kcftwh4UHJLa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4kqj7/btsPQrFYHS9/wmIaqlB84kcftwh4UHJLa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4kqj7%2FbtsPQrFYHS9%2FwmIaqlB84kcftwh4UHJLa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;812&quot; height=&quot;499&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자의 tmp 폴더의 권한을 777로 설정하면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OUBYk/btsPNkO9Ry4/1ncCKPb2XPM7epykuwzTx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OUBYk/btsPNkO9Ry4/1ncCKPb2XPM7epykuwzTx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OUBYk/btsPNkO9Ry4/1ncCKPb2XPM7epykuwzTx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOUBYk%2FbtsPNkO9Ry4%2F1ncCKPb2XPM7epykuwzTx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;838&quot; height=&quot;123&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 넘어간다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XE8yx/btsPOmlm4fz/AcovrQ0k04RCqgGx4cTlmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XE8yx/btsPOmlm4fz/AcovrQ0k04RCqgGx4cTlmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XE8yx/btsPOmlm4fz/AcovrQ0k04RCqgGx4cTlmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXE8yx%2FbtsPOmlm4fz%2FAcovrQ0k04RCqgGx4cTlmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;859&quot; height=&quot;604&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분을 넘어갈 수 있는 방법은 많지만 tmp 디렉토리로의 접근 문제로 인한 다른 에러를 방지하기 위해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크하고 넘어가는게 좋을 듯 하다&lt;/p&gt;</description>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/96</guid>
      <comments>https://note-front-end.tistory.com/96#entry96comment</comments>
      <pubDate>Mon, 11 Aug 2025 18:32:02 +0900</pubDate>
    </item>
    <item>
      <title>차단 IP 조회 쉘 스크립트</title>
      <link>https://note-front-end.tistory.com/95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dViVZH/btsPOCBbJsk/K4A8HolxMVn3Gb2h2slI0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dViVZH/btsPOCBbJsk/K4A8HolxMVn3Gb2h2slI0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dViVZH/btsPOCBbJsk/K4A8HolxMVn3Gb2h2slI0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdViVZH%2FbtsPOCBbJsk%2FK4A8HolxMVn3Gb2h2slI0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;722&quot; height=&quot;552&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IP 차단 여부를 자주 체크해서 전달해야 하는 일이 있는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굳이 우리팀에서 확인해서 알려주지 않아도 되도록 스크립트를 작성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OliveTin에서 실행결과를 출력해주기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른팀에서 터미널 접속할 필요없이 OliveTin만 실행해서 결과확인이 가능하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구성요소는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디렉토리 2개&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ip_list - 전체 차단 된 ip 목록&lt;/li&gt;
&lt;li&gt;diff - 이전에 있던 전체 차단 된 ip 목록의 변경사항&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉘 스크립트 1개&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;denied_ip.sh - 실행 스크립트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트 및 기타로그파일 1개&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;target_list.txt - 차단 된 ip 목록 파일의 경로가 적힌 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 구성되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 차단 ip 목록을 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 전체 차단 ip목록 파일을 diff로 비교하여 차이점 발생 시 diff 폴더에 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 오래된 전체 차단 ip 목록 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diff 파일 확인하여 최근 차단된 ip로 표시하여 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diff에는 있으나 전체 차단 ip 목록에 없는 경우 차단해제 표시하여 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1754877942068&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash
cd /root/denied_ip
DATE=$(date '+%Y%m%d_%H:%M:%S')
LOG_DIR=&quot;ip_list&quot;
DIFF_DIR=&quot;diff&quot;
TMP_DIFF=&quot;$DIFF_DIR/tmp_diff.log&quot;

mkdir -p &quot;$LOG_DIR&quot; &quot;$DIFF_DIR&quot;
LOGFILE=&quot;denied_ip_$(date '+%Y%m%d_%H%M%S').log&quot;
FULL_PATH=&quot;$LOG_DIR/$LOGFILE&quot;

DIFF_FILE=&quot;diff_$(date '+%Y%m%d_%H%M%S').log&quot;
DIFF_PATH=&quot;$DIFF_DIR/$DIFF_FILE&quot;

target_list=&quot;target_list.txt&quot;

# all denied ip listi
echo &quot;###&quot; &amp;gt; &quot;$FULL_PATH&quot;
echo &quot;### iptables&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;
echo &quot;###&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;

sudo iptables -L INPUT -n -v | awk 'NR&amp;gt;2 &amp;amp;&amp;amp; $1 ~ /^[0-9]+$/ {print $8}' &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;
echo -e &quot;\n\n&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;

while IFS= read -r SRC
do
  # 빈 줄이나 #로 시작하는 줄 스킵
  case &quot;$SRC&quot; in
    ''|\#*) continue ;;
  esac
  echo &quot;###&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;
  echo &quot;### $(basename &quot;$SRC&quot;)&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;
  echo &quot;###&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;
  awk '$1 ~ /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/ { print $1 }' &quot;$SRC&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;
  echo -e &quot;\n\n&quot; &amp;gt;&amp;gt; &quot;$FULL_PATH&quot;
done &amp;lt; &quot;$target_list&quot;
# compare all denied ip lists
log_files=($(ls -1t &quot;$LOG_DIR&quot;/denied_ip_*.log 2&amp;gt;/dev/null))

if [ ${#log_files[@]} -ge 2 ]; then
    NEW_FILE=&quot;${log_files[0]}&quot;
    OLD_FILE=&quot;${log_files[1]}&quot;

    diff &quot;$OLD_FILE&quot; &quot;$NEW_FILE&quot; \
      | grep '^&amp;gt;' \
      | grep -v '#' \
      | sed &quot;s/^&amp;gt; \(.*\)/\1 $DATE/&quot; &amp;gt; &quot;$TMP_DIFF&quot;

    # ip diff save
    if grep -qE '([0-9]{1,3}\.){3}[0-9]{1,3}' &quot;$TMP_DIFF&quot;; then
        mv &quot;$TMP_DIFF&quot; &quot;$DIFF_PATH&quot;
    else
        rm -f &quot;$TMP_DIFF&quot;
    fi

    # old diff file remove
    ls -t &quot;$DIFF_DIR&quot;/diff*.log 2&amp;gt;/dev/null | tail -n +7 | xargs -r rm -f
    rm -f &quot;$OLD_FILE&quot;
fi


############################## result
echo &quot;#######################&quot;
echo &quot;### 최근 차단된 IP  ###&quot;
echo &quot;#######################&quot;
diff_files=($(ls -1t &quot;$DIFF_DIR&quot;/diff*.log 2&amp;gt;/dev/null))

if [ ${#diff_files[@]} -gt 0 ]; then
    for file in &quot;${diff_files[@]}&quot;; do
        while read -r ip; do
            # IP 형식만 추출 (예: &quot;pass 1.2.3.4&quot; 또는 &quot;1.2.3.4 YYYYMMDD_HH:MM:SS&quot;)
            target_ip=$(echo &quot;$ip&quot; | awk '{print $1}')
            [[ &quot;$target_ip&quot; =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(/[0-9]+)?$ ]] || continue

            if grep -qwF &quot;$target_ip&quot; &quot;$FULL_PATH&quot;; then

                echo &quot;차    단$ip&quot;
            else
                echo &quot;차단해제$target_ip&quot;
            fi
        done &amp;lt; &quot;$file&quot;
    done
 #   echo $DIFF_DIR'/'*
else
    echo &quot;there is no file&quot;
fi
echo &quot;&quot;
echo &quot;######################&quot;
echo &quot;### 모든 차단된 IP ###&quot;
echo &quot;######################&quot;
echo &quot;&quot;
cat &quot;$FULL_PATH&quot;
#echo &quot;$(date '+%H:%M:%S.%3N') - $ip&quot;
sleep 0.5s
exit 0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux</category>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/95</guid>
      <comments>https://note-front-end.tistory.com/95#entry95comment</comments>
      <pubDate>Mon, 11 Aug 2025 11:33:46 +0900</pubDate>
    </item>
    <item>
      <title>서비스 프록시</title>
      <link>https://note-front-end.tistory.com/94</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스의 서비스가 트래픽을 올바른 파드(Pod)로 전달하도록 중간에서 라우팅&amp;middot;포워딩을 해주는 구성 요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청으로 온 cluster IP를 실제 Pod IP와 연결해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적으로 kube-proxy가 있으며 3가지 방식으로 움직인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iptables - 서비스의 가상 IP와 포트를 커널레벨의 iptables 규칙으로 등록 후 패킷을 해당 서비스의 파드로 NAT&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IPVS - 리눅스 커널의 IPVS 모듈을 이용 - 대규모 작업에 효과적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userspace - kube-proxy 프로세스가 직접 소켓을 포워딩하는 형식(현재는 거의 안쓰임)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iptables 방식&lt;/p&gt;
&lt;pre id=&quot;code_1754824821428&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ClusterIP로 들어온 패킷을 서비스 체인으로 이동
-A KUBE-SERVICES -d 10.96.0.1/32 -p tcp --dport 80 \
  -j KUBE-SVC-XXXXXXX

# 서비스 체인 &amp;rarr; 엔드포인트 체인 (라운드 로빈)
-A KUBE-SVC-XXXXXXX -m statistic --mode random --probability 0.333333 \
  -j KUBE-SEP-AAAAAAA
-A KUBE-SVC-XXXXXXX -j KUBE-SEP-BBBBBBB
...

# 엔드포인트 체인에서 DNAT 수행
-A KUBE-SEP-AAAAAAA -j DNAT --to-destination 10.244.1.5:80&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커널수준에서 처리하기에 빠른 편이고, 의존성이 적다는 장점이 있다.&lt;/li&gt;
&lt;li&gt;서비스나 파드수가 늘어날수록 규칙이 더 복잡해지기 때문에 업그레이드 시 성능저하의 위험이 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IPVS 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1328&quot; data-start=&quot;1273&quot;&gt;&lt;b&gt;원리&lt;/b&gt;: Linux 커널의 &lt;b&gt;IPVS (IP Virtual Server)&lt;/b&gt; 모듈을 사용&lt;/li&gt;
&lt;li data-end=&quot;1370&quot; data-start=&quot;1329&quot;&gt;IPVS는 iptables보다 더 전문적인 &lt;b&gt;L4 로드밸런싱 엔진&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1424&quot; data-start=&quot;1371&quot;&gt;kube-proxy가 ipvsadm 명령을 통해 &lt;b&gt;서비스와 엔드포인트를 커널에 등록&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1465&quot; data-start=&quot;1425&quot;&gt;커널 내부에서 해시 테이블로 매핑 &amp;rarr; 검색과 라우팅 속도가 훨씬 빠름&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1754825669060&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;TCP  10.96.0.1:80 rr
  -&amp;gt; 10.244.1.5:80  Masq    1  0  0
  -&amp;gt; 10.244.2.8:80  Masq    1  0  0
  -&amp;gt; 10.244.3.12:80 Masq    1  0  0&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1732&quot; data-start=&quot;1647&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1674&quot; data-start=&quot;1647&quot;&gt;커널 레벨 해시 기반 &amp;rarr; 규칙이 많아져도 빠름&lt;/li&gt;
&lt;li data-end=&quot;1706&quot; data-start=&quot;1675&quot;&gt;다양한 LB 알고리즘 지원 (rr, lc, sh 등)&lt;/li&gt;
&lt;li data-end=&quot;1732&quot; data-start=&quot;1707&quot;&gt;iptables보다 업데이트 시 부하 적음&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1786&quot; data-start=&quot;1743&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1786&quot; data-start=&quot;1743&quot;&gt;IPVS 모듈이 커널에 로드되어 있어야 함 (추가 설정 필요할 수도 있음)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>kubernetes</category>
      <author>야끼 소바</author>
      <guid isPermaLink="true">https://note-front-end.tistory.com/94</guid>
      <comments>https://note-front-end.tistory.com/94#entry94comment</comments>
      <pubDate>Sun, 10 Aug 2025 21:04:45 +0900</pubDate>
    </item>
  </channel>
</rss>