728x90
반응형
  • 문제

Jenkins LDAP 구성 시 아래와 같은 에러 메시지 발생

 

  • 해결 방법
해결을 위해 TLS1에 대한 부분 제거
 
 
vi JAVA_HOME/jre/lib/security/java.security
 
jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1 ## 해당 부분의 TLS 관련 내용 삭제

 

728x90
300x250

'IT > Opensource' 카테고리의 다른 글

Redash 설치 및 세팅 (bitnami 버전)  (0) 2021.08.11
Redash 설치 및 세팅 (Docker Compose 버전)  (0) 2021.08.11
LVS 사전 준비  (0) 2021.08.09
PMM 명령어  (0) 2021.07.30
PMM 삭제 방법  (0) 2021.07.04
728x90
반응형

String Time 을 Date 값으로 변환

echo 1621230001 | awk '{print strftime("%d/%m/%y %T",$1)}'
17/05/21 14:40:01
728x90
300x250

'IT > OS' 카테고리의 다른 글

AD 동기화 확인  (0) 2021.07.07
OS xfs 파일시스템 용량 증설  (0) 2021.07.04
IP2Location 사용 시 Perl 패키지 설치  (0) 2021.07.01
IOPS 상태 이상 징후 발생 대처 방안  (0) 2021.07.01
윈도우즈 파일 찾아서 지우기  (0) 2020.07.08
728x90
반응형

systemctl 로 해당 서비스를 시작 할 때 기본적으로 PrivateTmp가 yes로 설정 되어 있다.

cat /usr/lib/systemd/system/munin-node.service
[Unit]
Description=Munin Node
Documentation=man:munin-node(1) http://guide.munin-monitoring.org/en/latest/node/index.html
After=network.target network-online.target
PartOf=munin-asyncd.service
 
[Service]
Type=notify
ExecStart=/usr/sbin/munin-node --foreground
PrivateDevices=no
PrivateTmp=yes
ProtectHome=read-only
ProtectSystem=full
TimeoutStopSec=30s
 
[Install]
WantedBy=multi-user.target

 

그렇게 되면 munin tmp의 경로는 기본적으로 private tmp경로를 참조한다. (/tmp 아님)

# munin의 private tmp 경로
 
/var/tmp/systemd-private-5e2dee87e6974caaba6252c0743ea1d1-munin-node.service-czrVqe/tmp

 

따라서 /tmp/ 안에 있는 Application log를 모니터링 하기 위해선 private tmp 를 비활성화 해야함

 cat /usr/lib/systemd/system/munin-node.service
[Unit]
Description=Munin Node
Documentation=man:munin-node(1) http://guide.munin-monitoring.org/en/latest/node/index.html
After=network.target network-online.target
PartOf=munin-asyncd.service
 
[Service]
Type=notify
ExecStart=/usr/sbin/munin-node --foreground
PrivateDevices=no
PrivateTmp=false           ## 비활성화
ProtectHome=read-only
ProtectSystem=full
TimeoutStopSec=30s
 
[Install]
WantedBy=multi-user.target
 
# systemd 파일 변경으로 daemon reload 진행
systemctl daemon-reload
 
# munin 서비스 재시작
systemctl restart munin-node.service

 

728x90
300x250

'IT > Munin' 카테고리의 다른 글

Munin 플러그인 설정  (0) 2021.07.29
Connections-through-firewall 유효화  (0) 2021.07.29
Munin 노드 설치 및 구성  (0) 2021.07.07
munin.conf  (0) 2021.07.07
Munin 서버 설치 및 초기설정  (0) 2021.07.07
728x90
반응형
# 필요 Perl 패키지
yum install perl-core
yum install perl-LWP-Protocol-https
 
# IP2Location Download 진행
perl download.pl -package DB1 -token 토큰입력 -output /home/test/COUNTRY/test.ZIP
728x90
300x250
728x90
반응형

MongoDB 서버에 GP3 IOPS 체크에 대한 CloudWatch 를 설정 해두어, Slack을 통해 해당 얼럿을 확인이 되었을 때.

 

해당 서버 접속하여 실제 IOPS를 어떻게 사용하는지 모니터링 합니다.

$ iostat -dx -c 1
 
Linux 3.10.0-1062.12.1.el7.x86_64 ()    2021년 06월 15일   _x86_64_    (2 CPU)
 
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.14    0.00    0.09    0.00    0.10   99.68
 
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme0n1           0.00     0.02    0.00    0.19     0.06     2.04    22.34     0.00    1.20    1.13    1.20   0.16   0.00
 
cpu와 iowait 그리고 Read/Write 와 util 정도 확인 한다.

 

실제로 많은 IOPS 사용 중인게 확인 된다면, iotop 을 설치 합니다.

# yum install iotop
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: d36uatko69830t.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
base                                                                                                                        | 3.6 kB  00:00:00
extras                                                                                                                      | 2.9 kB  00:00:00
updates                                                                                                                     | 2.9 kB  00:00:00
(1/2): extras/7/x86_64/primary_db                                                                                           | 242 kB  00:00:00
(2/2): updates/7/x86_64/primary_db                                                                                          | 8.8 MB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package iotop.noarch 0:0.6-4.el7 will be installed
--> Finished Dependency Resolution
 
Dependencies Resolved
 
===================================================================================================================================================
 Package                           Arch                               Version                               Repository                        Size
===================================================================================================================================================
Installing:
 iotop                             noarch                             0.6-4.el7                             base                              52 k
 
Transaction Summary
===================================================================================================================================================
Install  1 Package
 
Total download size: 52 k
Installed size: 156 k
Is this ok [y/d/N]: y
Downloading packages:
iotop-0.6-4.el7.noarch.rpm                                                                                                  |  52 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : iotop-0.6-4.el7.noarch                                                                                                          1/1
  Verifying  : iotop-0.6-4.el7.noarch                                                                                                          1/1
 
Installed:
  iotop.noarch 0:0.6-4.el7
 
Complete!

iotop 명령어를 통해 프로세스별 디스크 점유율 확인 합니다.

# iotop -P
Total DISK READ :   0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:   0.00 B/s | Actual DISK WRITE:       0.00 B/s
   PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --system --deserialize 15
     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
     4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
     6 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
     8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
     9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
    10 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [lru-add-drain]
    11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/1]
    13 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
    14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
    16 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0H]
    18 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
    19 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
    20 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]
    21 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [writeback]
    22 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kintegrityd]
    23 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
    24 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
    25 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
    26 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kblockd]
    27 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [md]
    28 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [edac-poller]
    29 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdogd]
    35 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kswapd0]
    36 be/5 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksmd]
    37 be/7 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khugepaged]
    38 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [crypto]
 16818 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % rsyslogd -n
    46 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthrotld]
    48 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kmpath_rdacd]
    49 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kaluad]
    51 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kpsmoused]
    53 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ipv6_addrconf]
 
프로세스 별로 Disk Read / Write IO를 확인 할 수 있습니다.

 

Active 중인 프로세스, 쓰레드별 디스크 점유율도 확인 합니다.

# iotop -o
 
Total DISK READ :   0.00 B/s | Total DISK WRITE :      11.90 K/s
Actual DISK READ:   0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 56499 be/4 mongodb     0.00 B/s    0.00 B/s  0.00 %  0.00 % mongos -f /usr/local/mongodb/conf/router.conf [ftdc]
 
프로세스 쓰레드 별로 확인 가능합니다.

 

만약, 예를 들어 PMM 영향 인 것 같다라고 생각 되면, 아래 처럼 프로세스 조회 후 모두 kill 해 줍니다.

$ ps -ef | grep pmm
$ kill 프로세스
728x90
300x250
728x90
반응형

개요

  • ELK에서 공식적으로 지원하는 Alerting 기능은 X-PACK을 구입하여야 사용 가능한 기능입니다.
  • Yelp에서 개발한 오픈소스 라이브러리로, ElasticSearch의 데이터 패턴에 대한 알림을 설정할 수 있다. 다양한 커스터마이징을 제공함

 

설치 방법

1. 파이썬과 필요한 패키지를 설치 합니다.

 

# 파이썬 설치
yum install python3
 
# pip 설치
yum install python-pip
 
# 위에 방법으로 설치가 안될 때 진행
1. curl -O https://bootstrap.pypa.io/get-pip.py
2, python3 get-pip.py --user
 
# ciff 설치 (1.11.5 이상 필요)
yum install pyhon-ciff*
 
# 파이썬 Develop 설치 파이썬과 같은 버전으로 설치 진행
yum install python-devel3*
 
# 관련 패키지 설치
pip install "setuptools>=11.3" python setup.py install
 
# ElastAlert 설치
pip install elastalert

 

2. 설치 기본 경로로 이동

cd /usr/local/lib/python3.6/site-packages/elastalert

 

3. ElastAlert 관련 Yaml 설정

  • config.yaml 과 rule.yaml을 설정 해야 합니다.

config.yaml 주요 옵션
rules_folder : config.yaml 파일의 경로 기준으로 rule 파일들이 위치한 폴더
run_every : 알람의 주기를 설정하는 옵션, python 문법으로 timedelta 옵션에 쓸수있는 값들을 넣으면된다. days, seconds, microseconds, milliseconds, minutes, hours, weeks
buffer_time : 일부 로그소스가 실시간이 아닌 경우 결과를 버퍼링할 최근기간
es_host : elasticsearch 호스트
es_port : elasticsearch 포트

writeback_index : 메타데이터 저장에 사용하는 index, 해당 인덱스는 사용자가 직접 만들어줘야 하는듯하다.
alert_time_limit : 알람 실패시 재시도할 주기

728x90
# config.yaml 
 
# This is the folder that contains the rule yaml files
# Any .yaml file will be loaded as a rule
rules_folder: /usr/local/lib/python3.6/site-packages/elastalert/alertScript/
 
# How often ElastAlert will query Elasticsearch
# The unit can be anything from weeks to seconds
run_every:
  minutes: 5
 
# ElastAlert will buffer results from the most recent
# period of time, in case some log sources are not in real time
buffer_time:
  minutes: 15
 
# The Elasticsearch hostname for metadata writeback
# Note that every rule can have its own Elasticsearch host
es_host: syf-es-0.cocone
 
# The Elasticsearch port
es_port: 9200
 
# The AWS region to use. Set this when using AWS-managed elasticsearch
#aws_region: us-east-1
 
# The AWS profile to use. Use this if you are using an aws-cli profile.
# See http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html
# for details
#profile: test
 
# Optional URL prefix for Elasticsearch
#es_url_prefix: elasticsearch
 
# Connect with TLS to Elasticsearch
#use_ssl: True
 
# Verify TLS certificates
#verify_certs: True
 
# GET request with body is the default option for Elasticsearch.
# If it fails for some reason, you can pass 'GET', 'POST' or 'source'.
# See http://elasticsearch-py.readthedocs.io/en/master/connection.html?highlight=send_get_body_as#transport
# for details
#es_send_get_body_as: GET
 
# Option basic-auth username and password for Elasticsearch
#es_username: someusername
#es_password: somepassword
 
# Use SSL authentication with client certificates client_cert must be
# a pem file containing both cert and key for client
#verify_certs: True
#ca_certs: /path/to/cacert.pem
#client_cert: /path/to/client_cert.pem
#client_key: /path/to/client_key.key
 
# The index on es_host which is used for metadata storage
# This can be a unmapped index, but it is recommended that you run
# elastalert-create-index to set a mapping
writeback_index: elastalert_status
writeback_alias: elastalert_alerts
 
# If an alert fails for some reason, ElastAlert will retry
# sending the alert until this time period has elapsed
alert_time_limit:
  days: 1
 
# Custom logging configuration
# If you want to setup your own logging configuration to log into
# files as well or to Logstash and/or modify log levels, use
# the configuration below and adjust to your needs.
# Note: if you run ElastAlert with --verbose/--debug, the log level of
# the "elastalert" logger is changed to INFO, if not already INFO/DEBUG.
#logging:
#  version: 1
#  incremental: false
#  disable_existing_loggers: false
#  formatters:
#    logline:
#      format: '%(asctime)s %(levelname)+8s %(name)+20s %(message)s'
#
#    handlers:
#      console:
#        class: logging.StreamHandler
#        formatter: logline
#        level: DEBUG
#        stream: ext://sys.stderr
#
#      file:
#        class : logging.FileHandler
#        formatter: logline
#        level: DEBUG
#        filename: elastalert.log
#
#    loggers:
#      elastalert:
#        level: WARN
#        handlers: []
#        propagate: true
#
#      elasticsearch:
#        level: WARN
#        handlers: []
#        propagate: true
#
#      elasticsearch.trace:
#        level: WARN
#        handlers: []
#        propagate: true
#
#      '':  # root logger
#        level: WARN
#          handlers:
#            - console
#            - file
#        propagate: false

 

 

4. rule.yaml 설정

  • name : rule이름, 고유한 이름이므로 중복되어선 안된다.
  • type : 알람의 타입, 예제 파일 내용인 frequency 일때는 timeframe, num_events 옵션을 사용한다.
  • index : 해당 rule이 탐색할 elasticsearch의 인덱스
  • num_events : 정해진 time_frame 시간동안 일정 횟수이상 document 매치시 알람 발생.
  • timeframe : num_events 카운트를측정할 시간 단위
  • filter : 인덱스에서 매칭시킬 조건.
    • query_string : 루씬 쿼리 포맷을 사용하는 방식
    • filter: - query: query_string: query: "username: bob" - query: query_string: query: "_type: login_logs" - query: query_string: query: "field: value OR otherfield: othervalue" - query: query_string: query: "this: that AND these: those"
    • term : 지정한 필드에 매치할 값을 지정하는 방식
    • filter: - term: name_field: "bob" - term: _type: "login_logs"
    • terms : term과 같은 개념인데 매칭시킬 값을 여러개로 할수있다. (배열식)
    • filter: - terms: field: ["value1", "value2"] # value1 OR value2 - terms: fieldX: ["value1", "value2"] fieldY: ["something", "something_else"] fieldZ: ["foo", "bar", "baz"]
    • wildcard : * 문자를 사용하여 유사값을 매칭 시킬수있는 방식
    • filter: - query: wildcard: field: "foo*bar"
    • range : 숫자형식 필드에 대해 범위를 지정하는 방식
    • filter: - range: status_code: from: 500 to: 599
    • Negation, and, or : Elasticsearch 2.x 버전에서 사용되는 방식이었으나 5.x버전 이상부터는 작동되지 않고 query_string 방식을 사용한다.
# rule.yaml
 
 
# Alert when the rate of events exceeds a threshold
 
# (Optional)
# Elasticsearch host
es_host: test-es
 
# (Optional)
# Elasticsearch port
es_port: 9200
 
# (OptionaL) Connect with SSL to Elasticsearch
#use_ssl: True
 
# (Optional) basic-auth username and password for Elasticsearch
#es_username: someusername
#es_password: somepassword
 
# (Required)
# Rule name, must be unique
name: DigDag Alert Rule
 
# (Required)
# Type of alert.
# the frequency rule type alerts when num_events events occur with timeframe time
type: frequency
 
# (Required)
# Index to search, wildcard supported
index: digdag*
 
# (Required, frequency specific)
# Alert when this many documents matching the query occur within a timeframe
num_events: 1
 
# (Required, frequency specific)
# num_events must occur within this amount of time to trigger an alert
timeframe:
#  hours: 1
  seconds: 10
 
alert_text_args: ["errMsg", "path"]
alert_text: "errMsg: {0}\n\n\npath: {1}"
alert_text_type: alert_text_only

# minutes : 0분으로 하면 놓치는 얼럿 없이 다 보냄 
realert:
  minutes: 0
  
# (Required)
# A list of Elasticsearch filters used for find events
# These filters are joined with AND and nested in a filtered query
# For more info: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html
filter:
- query:
    query_string:
      query: "*"
 
# (Required)
# The alert is use when a match is found
alert:
- "slack"
slack:
slack_webhook_url: "https://hooks.slack.com/services/T02BEABAP/test/asd123"
#slack_webhook_url: "https://hooks.slack.com/services/T02BEABAP/teast/asd123"
slack_username_override: "ErrAlert-Bot"
slack_channel_override: "notification"
#slack_channel_override: "testchannel1"
slack_emoji_override: ":stest:"
#slack_msg_color: "danger"

 

5. 모든 설정이 끝났다면 커맨드 실행

nohup elastalert --verbose --start NOW --config /usr/local/elastalert/alertScript/config.yaml --rule /usr/local/elastalert/alertScript/rule.yaml &
728x90
300x250
728x90
반응형
# 아래 옵션들을 사용하겠다는 명시적 허용 ( Default : true )
cluster.routing.allocation.disk.threshold_enabled: true
 
# Default 85%, 디스크 용량이 85%이상 초과하게 되면 더이상 샤드의 할당 작업을 수행하지 않는다. primary 샤드를 생성할때는 영향을 주지 않는다.
(퍼센트는 바이트 방식으로 제한을 바꿀수 있다.)
cluster.routing.allocation.disk.watermark.low: 70%
 
# Default 90%, 모든 샤드 할당 작업 자체를 막는다.
(퍼센트는 바이트 방식으로 제한을 바꿀수 있다.)
cluster.routing.allocation.disk.watermark.high: 80%
 
# Default 95%, 초과시 모든 인덱스의 write 작업을 막는다. 각 인덱스 별로 index.blocks.read_only_allow_delete 옵션이 활성화 되며 read-only 만 가능한 상태로 변경된다.
cluster.routing.allocation.disk.watermark.flood_stage: 90%
 
# disk 상태 업데이트 인터벌
cluster.info.update.interval: 10s
728x90
300x250
728x90
반응형

1. ILM Policy 설정

PUT _ilm/policy/cleanup-history
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {}
      },
      "delete": {
        "min_age": "31d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

2.  템플릿 ILM 적용하기

728x90
PUT /_template/logging_policy_template?pretty
{
"index_patterns": ["access*", "app_log*", "error*", "syslog*", "auth*"], "settings": { "index.lifecycle.name": "cleanup-history" }
}

3. 기 생성된 Index에 ILM 적용하기

PUT /access*/_settings?pretty
{
  "lifecycle.name": "cleanup-history"
}

4. 적용 확인 하기

GET /access-2021.03.31*/_settings?pretty
728x90
300x250

+ Recent posts