Rockyインストール
以下ページから、ISOファイルダウンロード
https://rockylinux.org/ja/download
ネットワークは以下から設定。ファイルからは編集できないのかな??
# nmtui
エミュレータから接続ができるように変更
# 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
http://[ホスト]/zabbixをアクセスし、ウィザードに従いセットアップする
ユーザー:Admin、初期パスワード:zabbix
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
・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
Data sources から Zabbixを選択
http://localhost/zabbix/api_jsonrpc.php
Connectionを入力
Zabbix WEBインターフェスにログインするユーザーとパスワード
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
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
参考