0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rocky9 で Zabbixのインストール

Last updated at Posted at 2024-06-01

Rockyインストール

以下ページから、ISOファイルダウンロード
https://rockylinux.org/ja/download

ネットワークは以下から設定。ファイルからは編集できないのかな??

# nmtui

image.png

エミュレータから接続ができるように変更

# vi /etc/ssh/sshd_config
PermitRootLogin yes

パッケージアップデート

# dnf -y update

SElinuxの無効化

setenforce 0
vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled or SELINUX=Permissive

あくまでテスト環境なのでFireWallは無効

systemctl stop firewalld
systemctl disable firewalld

タイムゾーン、ロケーション変更

timedatectl set-timezone Asia/Tokyo
dnf -y install glibc-locale-source glibc-langpack-ja
localectl set-locale LANG=ja_JP.UTF-8

Zabbix

・MySqlインストール
Zabbixの手順の前にmysqlをインストールしておく

# dnf install mysql-server
# systemctl start mysqld
# systemctl enable mysqld

・Zabbixインストール
https://www.zabbix.com/download?zabbix=6.0&os_distribution=alma_linux&os_version=9&components=server_frontend_agent&db=mysql&ws=apache

http://[ホスト]/zabbixをアクセスし、ウィザードに従いセットアップする
ユーザー:Admin、初期パスワード:zabbix
image.png
image.png

Grafana

以下リンクから最新のバージョンのリンクを確認
https://grafana.com/grafana/download?edition=oss&platform=linux

# sudo yum install -y https://dl.grafana.com/oss/release/grafana-11.0.0-1.x86_64.rpm
# systemctl start grafana-server.service
# systemctl enable grafana-server.service

http://[ホスト]:3000/login を開く
ユーザー:admin、パスワード:admin
image.png

・Zabbixプラグライン

# sudo grafana-cli plugins install alexanderzobnin-zabbix-app
# sudo systemctl restart grafana-server.service

オフラインの場合
https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app/?tab=installation

image.png

Data sources から Zabbixを選択
http://localhost/zabbix/api_jsonrpc.php
Connectionを入力
image.png

Zabbix WEBインターフェスにログインするユーザーとパスワード
image.png

Enableにする
image.png

Data Sources から mysqlも選択
必要事項を入力

Promtail

# sudo yum install -y https://github.com/grafana/loki/releases/download/v3.0.0/promtail-3.0.0.x86_64.rpm
# systemctl start promtail
# systemctl enable promtail

以下リンクから対象の一覧を確認可能。
http://[ホスト]:9080/targets

2つ以上を対象にする場合は、job_nameを追加する表示する対象を増やせる。

# vi /etc/promtail/config.yml
scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      #NOTE: Need to be modified to scrape any additional logs of the system.
      #__path__: /var/log/messages
      __path__: /var/log/*log

- job_name: zabbix
  static_configs:
  - targets:
      - localhost
    labels:
      job: zabbix
      #NOTE: Need to be modified to scrape any additional logs of the system.
      __path__: /var/log/zabbix/*

対象とするフォルダには読取・実行の権限を付与する必要あり。

# chmod go+rx *

Loki

以下リンクから最新のバージョンのリンクを確認
https://github.com/grafana/loki/releases/

# sudo yum install -y https://github.com/grafana/loki/releases/download/v3.0.0/loki-3.0.0.x86_64.rpm
# systemctl start loki
# systemctl enable loki

これでlokiの保存期間が設定できているはず
https://grafana.com/docs/loki/latest/operations/storage/retention/

vi /etc/loki/config.yml
compactor:
  retention_enabled: true
  delete_request_store: filesystem

limits_config:
  retention_period: 24h

以下URLが実データの保存場所指定の参考例
1-local-configuration-example.yamlがローカルディスクの指定例
https://grafana.com/docs/loki/latest/configure/examples/configuration-examples/

Data Sourcesから追加
http://localhost:3100

image.png

rsyslog

サーバー側
/etc/rsyslog.conf

TCPで受信できるように以下をコメントアウトを外す

module(load="imtcp")
input(type="imtcp" port="514")

ログの保存先とファイルを指定するためテンプレートを作成

# IPアドレスでフォルダ分け
#### template ####
template(name="LogGroup001" type="string" string="/var/log/remote/%fromhost-ip%/%$year%-%$month%-%$day%.log")

# ホスト名でフォルダ分け
template (name=”LogGroup001" “type”=string string=”/var/log/renite/%hostname%/%$year%%$month%%$day%.log")

受信するfacilityとpriority指定し、保存する先(テンプレートを指定)する
facility=ログの種類:例えば0だとカーネル関連、11だとftp関連等
priority=メッセージの種類:1だとアラート、6だとインフォメーション等
以下はすべての指定

#### rules ####
ruleset(name="ruleset001"){
   *.*  action(type="omfile" DynaFile="LogGroup001")
   stop
}

受信設定にルールセットを入れると定義に従って指定のフォルダに指定のファイル名でファイルを作成

module(load="imtcp")
input(type="imtcp" port="514" ruleset="ruleset001")

ルールの前に以下を指定しておくと、作成されるディレクトリやファイルの権限を指定できる

#新規ファイルのデフォルトのパーミッション
$umask 0000
 
#rsyslogディレクトリ、ファイルのデフォルトパーミッション指定
$DirCreateMode 0655
$FileCreateMode 0755

・クライアント側

転送するサーバーのIPアドレス、ポート、プロトコルを指定

action(type="omfwd" Target="XXX.XXX.XXX.XXX" Port="514" Protocol="tcp")

ローテーション
/etclogrotate.d/の配下で個別の設定をする
以下のように記載

# 例
/var/log/debug
/var/log/messages
{
    rotate 4 
    weekly
    missingok
    norifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || true
    endscripts
}

rotate : 世代の指定。
daily:一日ごとにローテーション。weeklyは1週間、monthlyは1か月などの時間間隔が指定可能
missingok:ローテーションするログファイルがなくてもエラーをださない
notifempty:ログファイルが空の場合ローテーションしない
delaycompress:圧縮処理を次回ローテーション時まで遅らせる。compressとともに指定
maxsize:指定したサイズ以上になった時にローテーションする。daily、weekly、monthlyと併用して使用することで、時間間隔とサイズどちらの条件でもローテーションが可能
size [xx]:指定したサイズ以上になった時だけローテーション。こちらは時間間隔の併用はできない
sharedscripts:ログファイルを複数した場合にも、postrotate~endscripts間の処理を実行とのことですが、よくわかんらす?

/var/log/remote/*/[ログファイル名]
{
    missingok
    rotate 3
    size 10k
    copytruncate
}

強制実行すると接尾語が数字のシーケンシャルになるが、自動実行されるときは日付となる。自動実行だと/etc/logrotate.confをみるため、そちらにdateextが設定されているためこれが適用される。以下の強制実行は個別の設定ファイルを直接指定しているため、dateextがないため数字でシーケンシャルになる。

# 強制実行
logrotate -f /etc/logrotate.d/[ローテートファイル]

# デバックモード実行
logrotate -dv /etc/logrotate.d/[ローテートファイル]

# ログローテートのステータスが確認できるコマンド
cat /var/lib/logrotate/logrotate.status

logrotateは一日一回実行される。つまり、各ログごとに指定した内容が実行されるのは1日1回。容量を指定しても即座に実行されるのではなくて、1日1回チェックして、指定された容量以上になったらローテートされる。

# タイマー設定されている一覧を表示。logrotate.timerが一日一回実行される
systemctl list-timers

NEXT                        LEFT          LAST                        PASSED       UNIT                         ACTIVATES
Fri 2024-07-12 00:00:00 JST 15h left      Thu 2024-07-11 00:00:00 JST 8h ago       logrotate.timer              logrotate.service

# 中身をみてみると logrotate.confを読み込むらしい()の数字はよくわからんす
cat /usr/lib/systemd/system/logrotate.timer
[Unit]
Description=Daily rotation of log files
Documentation=man:logrotate(8) man:logrotate.conf(5)

[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?