顯示具有 Ubuntu 標籤的文章。 顯示所有文章
顯示具有 Ubuntu 標籤的文章。 顯示所有文章

2023年9月27日 星期三

Zabbix Proxy 安裝-主動模式

Zabbix Proxy 安裝-主動模式

Zabbix Proxy 官網介紹:

https://www.zabbix.com/documentation/6.0/en/manual/concepts/proxy

https://www.zabbix.com/documentation/6.0/en/manual/distributed_monitoring/proxies

Zabbix Proxy可以代替 Zabbix server收集性能和可用性數據。
通過這種方式,Zabbix proxy可以自己承擔部分收集數據的負載,並減輕Zabbix Server的負擔。
此外,當所有agents和proxy都向同一台Zabbix server報告並且所有數據都集中收集時,使用Zabbix Proxy是實現集中式和分佈式監控的最簡單方法。
Zabbix proxy僅需要一個 TCP port連接Zabbix server。只需要設定一條防火牆規則,可以更輕鬆地繞過防火牆。
Zabbix proxy 是一個資料收集器。它不計算觸發器、處理事件或發送警報。
Zabbix proxy 需要使用獨立的數據庫。
Zabbix proxy支援主動和被動模式,因此可以依需求將資料主動發送到Zabbix Server或讓Zabbix Sever 向Zabbix proxy拉取資料2種方式。這也允許將資料收集和預處理效能負載從Zabbix Server移轉到Zabbix Porxy。

設備環境

Zabbix Server 主機

OS:Ubuntu Linux LTS 22.04,Hostname:u22-z6,IP:192.168.203.193,安裝 Zabbix Server 6.0 LTS

Zabbix Proxy 主機 (Active mode)

OS:Ubuntu Linux LTS 22.04,Hostname:u22-1,IP:192.168.203.122,安裝 Zabbix Proxy 6.0

將Zabbix Proxy 6.0 LTS安裝於Ubuntu Linux 22.04 LTS。Zabbix Proxy 資料庫將使用SQLite3建置。


安裝流程

Zabbix Proxy安裝時使用原廠網頁,選擇OS,Zabbix Proxy,SQLite3, 產生相關安裝指令。

01-package download

SQLite3安裝

# sudo apt install sqlite3
03-install sqlit3

Zabbix Poxy安裝

# sudo  apt install zabbix-proxy-sqlite3 zabbix-sql-scripts
04-install zabbix proxy
Zabbix資料庫欄位資料都在zabbix-sql-scripts,請一定要安裝執行匯入資料時才不會錯誤。

匯入資料

先建立資料庫檔案,再匯入資料
# sudo mkdir /data/zabbix
# cd /data/zabbix
# sudo cat /usr/share/zabbix-sql-scripts/sqlite3/proxy.sql | sudo sqlite3 zabbix.db

05-import data

Zabbix Proxy設定

修改Zabbix Proxy設定檔,檔案為/etc/zabbix/zabbix_proxy.conf
# sudo chown zabbix:zabbix /data/zabbix -R
# sudo  nano /etc/zabbix/zabbix_proxy.conf
---
ProxyMode=0
Hostname=u22-1
Server=Zabbix Server IP
DBName=/data/zabbix/zabbix.db
---
06-edit config proxyMode

Zabbix Proxy預設為主動模式,ProxyMode=0不用更改
06-edit config

將Hostname設定為Zabbix Proxy主機名稱,後續在Zabbix WEB設定時要相同名稱。
將Server設定Zabbix Server主機IP。

06-edit config db

將DBName設定上面建立的SQLite3 DB,檔案為/data/zabbix/zabbix.db

修改/data/zabbix/zabbix.db權限為zabbix
# sudo chown zabbix:zabbix /data/zabbix -R
啟動Zabbx Proxy,確認Zabbx Proxy狀態。
# sudo systemctl start zabbix-proxy
# sudo systemctl status zabbix-proxy
07-start zabbix proxy

安裝完成後就可以進行Zabbix WEB設定。


2023年9月16日 星期六

Ubuntu Linux Install Zabbix

Ubuntu Linux Install Zabbix 6

應用Zabbix 進行全方位監控了解整個環境中服務、主機及網路設備狀態,即時了解系統平台資訊。當異常狀況發生時,自動化且主動通知管理者,方便進行問題排除。及紀錄資訊。

建置環境

Zabbix系統建置使用vm環境

硬體配置2 CPU+2G RAM+40G HDD

OS:Ubuntu Linux 22.04 LTS server版本

Web Server:Apache2

PHP:PHP 8.1 + PHP-FPM 8.1

DB:MariaDB 10.6.12

Zabbix: Zabbix 6.0 LTS

建置流程

1.Ubuntu Linux server安裝後進行系統設定

2.MariaDB 安裝,並將DB資料目錄更改為/data/myql。

3.Apache2安裝

4.PHP 8.1 + PHP-FPM 8.1安裝

5.Zabbix Server安裝時使用原廠網頁,選擇OS,Zabbix Server, Frontend, Agent2,MySQL,Apache會產生相關安裝指令

zabbix install select

5-a.安裝 Zabbix repository

# sudo wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
# sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
# sudo apt update
zabbix deb download


5-b.安裝 Zabbix server, frontend, agent2
# sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2 

zabbix package install



5-c.建立Zabbix database
如果有依上面步驟建立MySQL,即可登入MySQL建立Zabbix資料庫及帳號密碼權限
# sudo mysql -uroot -p
# mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
# mysql> create user zabbix@localhost identified by '你的密碼';
# mysql> grant all privileges on zabbix.* to zabbix@localhost;
# mysql> set global log_bin_trust_function_creators = 1;
# mysql> quit;

Zabbix資料庫建立完成後,需匯入Zabbix schema and data,匯入的資料是包含在zabbix-sql-scripts套件中
# sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | sudo mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

匯入Zabbix schema and data後,請停用 log_bin_trust_function_creators 參數 
# sudo mysql -uroot -p
# mysql> set global log_bin_trust_function_creators = 0;
# mysql> quit;

zabbix install database


5-d.設定 Zabbix server 連接資料庫
# sudo nano /etc/zabbix/zabbix_server.conf
---
DBPassword=你的密碼
---
設定使用預設,DBPassword要使用上面設定的密碼。

5-e.設定Zabbix-agent2
# sudo nano /etc/zabbix/zabbix_agent2.conf
---
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix Server
---
Zabbix Server主機的Zabbix-agent2的server及ServerActive都設定127.0.0.1。如果其它設備請設定Zabbix Server主機IP。

5-f. 設定Apache 支援Zabbix 要求PHP參數,後面安裝過程會使用
# sudo nano /etc/php/8.1/fpm/pool.d/www.conf
---
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[always_populate_raw_post_data] = -1
php_value[date.timezone] = Asia/Taipei
---
加入內容最後面
zabbix php setup



重啟zabbix-server zabbix-agent apache2 php8.1-fpm服務,並將服務設定為開機啟動
# systemctl restart zabbix-server zabbix-agent2 apache2 php8.1-fpm
# systemctl enable zabbix-server zabbix-agent2 apache2 php8.1-fpm
zabbix restart


安裝完成後就可以進行Zabbix WEB設定




2023年9月7日 星期四

Debian / Ubuntu Linux APT 管理套件

Debian / Ubuntu Linux APT 管理套件

在 Debian / Ubuntu Linux 使用 apt 指令管理套件,記錄相關指令

APT 安裝套件

更新套件庫
# apt update

升級所有套件:
# apt upgrade

正常安裝package會列出想要安裝的套件外,也會列出suggests,recommends相關套件。
# apt install <package>

如果在安裝package過程不想安裝suggests,recommends相關套件減少容量,可以使用以下參數。
不安裝suggests套件
# apt --no-install-suggests install <package>

不安裝recommends套件
# apt --no-install-recommends install <package>

同時不安裝suggests,recommends套件
# apt --no-install-recommends --no-install-suggests install <package>

直接修改設定檔/etc/apt/apt.conf
---
APT::install-Recommends "false";
APT::install-Suggests "false";
---
檢查設定
apt-config dump | grep 

安裝deb檔:
# apt install ./<package>.deb


APT 管理套件

搜尋套件
# apt search <package>

只下載deb package,不進行安裝。
# apt install -d <package>
套件將會被下載至 /var/cache/apt/archives

如果已經安裝的deb packag,需要下載。
# apt reinstall -d <package>

APT 移除套件

列出要移除的套件
# dpkg -l | grep <package>

移除套件 package , 並保留設定檔
# apt --remove <package>

完整移除不保留設定檔,使用 purge 
# apt purge <package>

移除無用套件
# apt --purge autoremove <package>



2023年8月17日 星期四

Ubuntu Linux Install MariaDB

Unbutn Linux Install Mariadb

Ubuntu Linux 22.04 LTS 中可以直接安裝 MariaDB 10.6.12

MariaDB 安裝

# sudo apt install mariadb-server
apt install mariadb-server














安裝完成後,會自動啟動MariaDB service
#sudo systemctl status mariadb
sudo systemctl status mariadb





停止MariaDB service進行設定
#sudo systemctl stop mariadb
sudo systemctl stop mariadb






MariaDB 設定

基本設定

MariaDB Server安裝完成後,設定檔目錄為/etc/mysql/mariadb.conf.d/
主要設定檔為/etc/mysql/mariadb.conf.d/50-server.cnf
/etc/mysql/mariadb.conf.d/50-server.cnf








Server主要設定項目在[mysqld]
mysqld basic setting






mysql basic setting character










預設資料存放資料為/var/lib/mysql
未開放主機連線,如要開放請改為 #bind-address =127.0.0.1

新增設定

在原廠說明中建議新增設定不要去更改原有設定檔,在目錄新增z-開頭的檔案,
如z-custom-my.cnf,將相關設定寫入,系統自動會去覆蓋舊有設定。
mariadb config








在目錄中/etc/mysql/mariadb.conf.d/,新增z-mytune.cnf
將修改的設定寫入,不修改原有的50-server.cnf
# sudo nano /etc/mysql/mariadb.conf.d/z-mytune.cnf
---
[mysqld]

datadir                 = /data/mysql
tmpdir                  = /tmp

skip-name-resolve

expire_logs_days        = 7

max_connections = 150
innodb_buffer_pool_size = 512M

#innodb-log-file-size = 128M
#innodb-log-buffer-size = 128M
innodb-file-per-table = 1

#innodb_buffer_pool_instances = 8
#innodb_old_blocks_time = 1000
#innodb_stats_on_metadata = off
#innodb-flush-method = O_DIRECT
#innodb-log-files-in-group = 2
#innodb-flush-log-at-trx-commit = 2

#tmp-table-size = 96M
#max-heap-table-size = 96M
#open_files_limit = 65535
#max_connect_errors = 1000000
#connect_timeout = 60
#wait_timeout = 28800
---
nano /etc/mysql/mariadb.conf.d/10-mytune.cnf













資料存放資料為/var/lib/mysql更改為/data/mysql
# sudo mkdir /data/mysql -p
#sudo chown mysql:mysql /data/mysql
mkdir /data/mysql



mysql_secure_installation

啟動maridb server,執行mysql_secure_installation,
進行設定root密碼及相關設定。
# sudo mysql_secure_installation
sudo mysql_secure_installation01














sudo mysql_secure_installation02


















設定完成後,使用sudo mysql 即可登入檢查MariaDB Server狀態。

sudo mysql status










2023年8月15日 星期二

Ubuntu Linux Install PHP

Unbutn Linux Install PHP

Ubuntu Linux 22 LTS中預設的php版本為8.1,可以直接安裝搭配Apache或Nginx等Web Server 使用。

PHP安裝

PHP8.1安裝

# sudo apt install php8.1

PHP8.1驗證

# php -v

# php -i | head

php81 version






使用php -i | grep head 檢查info,可以看到預設的php.ini位置,是在/etc/php/8.1/cli/php.ini

設置 php.ini中的時區為Asia/Taipei
# sudo vim /etc/php/8.1/apache2/php.ini
---
date.timezone = "Asia/Taipei"
---

依照需求安裝所需的 PHP Extensions

php8.1-cli php8.1-dev php8.1-phpdbg php8.1-bz2 php8.1-common php8.1-curl php8.1-gd php8.1-json php8.1-ldap php8.1-mbstring php8.1-mcrypt php8.1-mysql php8.1-readline php8.1-snmp php8.1-tidy php8.1-xml php8.1-xmlrpc php8.1-zip php8.1-fpm


2023年8月10日 星期四

Ubuntu Linux server locale setting

Ubuntu Linux server 變更系統語言環境

Ubuntu Linux server 使用最小安裝後,發現系統語言環境不是en_US.UTF-8
使用以下步驟變更

1.檢查目前系統語言環境

# sudo locale
system locale status









2.编辑配置文件

修改為en_US.UTF-8,新增LANGUAGE="en_US:en"
# cat /etc/default/locale
locale c-utf




# sudo nano /etc/default/locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
edit defalut locale





重新啟動

3..安裝系統語言

重新啟動,檢查未生效
new locale status










檢查目前系統安裝的locale語言
# locale -a
locale check





沒有安裝en_US.UTF-8

4.安裝en_US.UTF-8

# sudo locale-gen en_US.UTF-8

locale gen install en.uft8




5.重新啟動後,設定正常

locale change to enutf8












Ubuntu Linux time setting

Ubuntu Linux 時間及校時設定

Ubuntu Linux安裝完成後預設為UTC時區,需進行設置為本地時間

時區timezone設定

使用timedatectl可以檢查主機目前的時區設置
# sudo timedatectl 
timedatectl status







使用timedatectl list-timezones 可以列出所有的時區。
# sudo timedatectl list-timezones | grep Taipei
使用timedatectl set-timezone設定時區
# sudo timedatectl set-timezone Asia/Taipei
檢查時間設定
# sudo timedatectl 
timedatectl set-timezone









網路校時設定

網路校時是使用timedatectl set-ntp功能讓系統自動校時
開啟網路校時
# sudo timedatectl set-ntp yes
timedatectl timezone status








timedatectl的校時功能是經由systemctl-timesyncd服務執行 
當set-ntp yes,等於執行systemctl enable --now systemd-timesyncd
當set-ntp no,等於執行systemctl disable --now systemd-timesyncd
# sudo systemctl status systemctl-timesyncd
systemctl status systemctl-timesyncd













可以編輯/etc/systemd/timesyncd.conf設定檔,指定網路校時的NTP主機。
# sudo nano /etc/systemd/timesyncd.conf
edit /etc/systemd/timesyncd.conf




NTP主機用IP或網站都可以,以空白分隔多個主機
NTP= time.stdtime.gov.tw clock.stdtime.gov.tw
備用NTP主機用IP或網站都可以,以空白分隔多個主機
FallbackNTP=tick.stdtime.gov.tw tock.stdtime.gov.tw watch.stdtime.gov.tw

重啟systemctl-timesyncd讓設定生效
# sudo systemctl restar systemctl-timesyncd
systemctl restar systemctl-timesyncd











檢查時間同步
# sudo timedatectl timesync-status
timedatectl timesync-status

 








關閉網路校時
# sudo timedatectl set-ntp no






參考資料:



2023年8月5日 星期六

Ubuntu Linux system setting

Ubuntu Linux 系統設定

Ubuntu Linux安裝完成後, 依需求進行系統調整

調整項目

1.SWAP調整

2.時間及校時設定

3.語言環境設置

4.UFW防火牆設置

5.停用IPv6

6.Netplan或NetworkManager網路設定

7.停用自動更新

8.停用休眠

9.停用cloud-init

停用cloud-init有2個方式
1.創建空白文件 /etc/cloud/cloud-init.disabled 
開機過程,系統會檢查該文件是否存在。如果存在,則不會啟動cloud-init。
# sudo touch /etc/cloud/cloud-init.disabled

2.增加cloud-init=disabled到kernel 中,開機過程不啟動cloud-init
# sudo  echo 'GRUB_CMDLINE_LINUX=cloud-init.disabled' >> /etc/default/grub
# sudo  grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg

3.移除cloud-init
# sudo dpkg-reconfigure cloud-init
# sudo apt-get purge cloud-init
# sudo rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/
# sudo reboot


2023年8月4日 星期五

Ubuntu Linux disable IPv6

Ubuntu Linux 停用IPv6

Ubuntu 22.04 LTS 安裝完成後,預設是啟用IPv6。

ubuntu default enable ipv6





如果有需要可以依下面方法停用。

使用sysctl設置停用IPv6

可以使用sysctl設置 來暫時停用或永遠停用IPv6

1.直接執行以下指令暫時停用IPv6

# sudo  sysctl -w net.ipv6.conf.all.disable_ipv6=1

# sudo  sysctl -w net.ipv6.conf.default.disable_ipv6=1

# sudo  sysctl -w net.ipv6.conf.lo.disable_ipv6=1

sysctl -w disable ipv6

可以使用" sudo sysctl -a | grep disable_ipv6 "檢查差異,確認停用IPv6

sysctl -w check ipv6 stauts


2.以上指令暫時停用IPv6但系統重開機就會失效, 可以直接將設定寫入檔案讓開機永遠生效

將以下指令寫入/etc/sysctl.d/70-disable-ipv6.conf,可執行 sysctl -p 生效或重新開機。

net.ipv6.conf.all.disable_ipv6=1

net.ipv6.conf.default.disable_ipv6=1

net.ipv6.conf.lo.disable_ipv6 = 1

add 70-disable-ipv6.conf








重開機後發現部分網卡未停用IPv6功能,使用" sysctl -a | grep disable_ipv6 "," cat /proc/sys/net/ipv6/conf/all/disable_ipv6 "檢查, 只有單一網卡未停用IPv6

3,在/etc/sysctl.d/70-disable-ipv6.conf增加設定,重開機確認正常

add lan disable ipv6 sysctl file








使用grub設置停用IPv6

修改grub設置,在kernel中直接停用IPv6

1. 修改/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT,GRUB_CMDLINE_LINUX增加ipv6.disable=1

#sudo nano /etc/default/grub

2.執行sudo update-grub更新

#sudo update-grub

edit grub disable ipv6






3.重開機就發現IPv6已關閉,確認無相關設定

grub disable ipv6 reboot






如果確認不使用IPv6,會使用修改kernel方式停用。如果使用sysctl方式設定完成要再確認是否完整停用。


Ubuntu Server autoinstall cloud-init config file reference

Ubuntu Server autoinstall cloud-init config file reference


在使用cloud-init建立Ubuntu Server autoinstall ISO過程,需要製作autoinstall的user-data。參考ubunt的Automated Server installer config file reference產出個人的user-data


user-data項目說明

user-data為yaml檔,開頭註明為#cloud-conifg
#cloud-config

# autoinstall 設定項目
autoinstall:
  apt:
    disable_components: []
    fallback: abort
    geoip: true
    mirror-selection:
      primary:
      - country-mirror
      - arches:
        - amd64
        - i386
        uri: http://archive.ubuntu.com/ubuntu  
# uri為apt update sites, 可以依需求更改,資料會寫入/etc/apt/sources.list
      - arches:
        - s390x
        - arm64
        - armhf
        - powerpc
        - ppc64el
        - riscv64
        uri: http://ports.ubuntu.com/ubuntu-ports
    preserve_sources_list: false

  codecs:
    install: false
  drivers:
    install: false

# 設定系統帳號, 密碼為加密, 可以使用mkpasswd產出。
  identity:
    hostname: u22
    password: $6$jGYK2yqL/ERewR7A$kGm5GztrXrQPb7L3wa0VAMeaWj/UuJcUVB/M.T.fOkaV8SvFIMdULOfKHyRDkB..85yVsDPJrtpQ3bsj3Rtnt.
    realname: bee01
    username: bee01
  kernel:
    package: linux-generic

# 指定鍵盤
  keyboard:
    layout: us
    toggle: null
    variant: ''

# 指定語言
  locale: en_US.UTF-8

# 網路設定,網路卡依實際名稱設定。設定方式為netplan,可以參考設定。
  network:
    ethernets:
      ens160:
        dhcp4: true
    version: 2

# 指定安裝系統,可以設定ubuntu-server 或 ubuntu-server-minimal。
  source:
    id: ubuntu-server
    search_drivers: false

# 安裝open SSH server
  ssh:
    allow-pw: true
    authorized-keys: []
    install-server: true

# 硬碟分區設定,可以依實際狀況調整
  storage:
    config:
    - ptable: gpt
      path: /dev/sda
      wipe: superblock-recursive
      preserve: false
      name: ''
      grub_device: true
      type: disk
      id: disk-sda
    - device: disk-sda
      size: 1048576
      flag: bios_grub
      number: 1
      preserve: false
      grub_device: false
      offset: 1048576
      path: /dev/sda1
      type: partition
      id: partition-0
    - device: disk-sda
      size: 42946527232
      wipe: superblock
      number: 2
      preserve: false
      grub_device: false
      offset: 2097152
      path: /dev/sda2
      type: partition
      id: partition-1
    - fstype: xfs
      volume: partition-1
      preserve: false
      type: format
      id: format-0
    - path: /
      device: format-0
      type: mount
      id: mount-0

# 指定swap大小,使用檔案格式
    swap:
      filename: /swap.img
      size: 4G
      maxsize: 4G

# 安裝 packages, 需確定安裝過程是可以連接網路, 會自動安裝。
# 如果沒有對外網路,自動安裝過程會出錯中斷。
  packages:
    - chrony

# 主機時區設定
  timezone: Asia/Taipei

# 自動安裝前執行的動作,還沒有想到作用
# 可以參考後面示範
  early-commands:
    - mkdir /data1
    - touch /data1/early-commands.txt

# 以上設定都自動安裝後,在自動重新開機前執行的動作
# 預計要執行的指令需 curtin in-target來執行,新的硬碟在安裝過程是掛載至/target
# 以下測試是在/ 建立data2目錄,在/data2目錄建立late-commands.txt檔案
# 可以參考後面示範
  late-commands:
    - curtin in-target --target /target mkdir data2
    - curtin in-target --target /target touch data2/late-commands.txt

# 安裝完成後,第一次自動重開機後,使用rnncmd來執行的動作
# 以下測試是在/ 建立data3目錄,在/data2目錄建立runcmd.txt檔案,並停用開機執行ufw service 
# 可以參考後面示範
  user-data:
    runcmd:
      - [ mkdir, /data3 ]
      - [ touch, /data3/runcmd.txt ]
      - [ systemctl, disable, ufw ]

  updates: security
  version: 1

安裝示範

early-commands
usr-data-early-commands







late-commands
usr-data-late-commands





runcmd
usr-data-runcmd