2024年6月28日 星期五

ubuntu 24.04.1 install zabbix 7.0_ngnix

 ubuntu 24.04.1 install zabbix 7.0_ngnix

設定固定IP

1.sudo nano /etc/netplan/50-cloud-init.yaml

network:

  version: 2

  ethernets:

    eth0:

      dhcp4: false

      addresses: [192.168.137.205/24]

      routes:

      - to: default

        via: 192.168.137.1

      nameservers:

        addresses: [1.1.1.1,8.8.8.8]


重啟網路設定

sudo netplan apply

更改系統的時區

看目前時區

timedatectl

修改時區

sudo timedatectl set-timezone Asia/Taipei

安裝NTP同步時間

sudo apt update

sudo apt upgrade

sudo reboot

sudo apt install -y ntp

sudo systemctl start ntp

sudo systemctl enable ntp

ntpq -p

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu24.04_all.deb

sudo dpkg -i zabbix-release_7.0-1+ubuntu24.04_all.deb

sudo apt update

安装Zabbix server,Web前端,agent

sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent mysql-server

mysql --version

sudo systemctl start mysql.service

sudo systemctl enable mysql.service

sudo mysql -uroot

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '1qaz2wsx';

exit;

sudo mysql_secure_installation

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords

and improve security. It checks the strength of password

and allows the users to set only those passwords which are

secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: n

Using existing password for root.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

 ... skipping.

By default, a MySQL installation has an anonymous user,

allowing anyone to log into MySQL without having to have

a user account created for them. This is intended only for

testing, and to make the installation go a bit smoother.

You should remove them before moving into a production

environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Success.

Normally, root should only be allowed to connect from

'localhost'. This ensures that someone cannot guess at

the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Success.

By default, MySQL comes with a database named 'test' that

anyone can access. This is also intended only for testing,

and should be removed before moving into a production

environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No)                      : y

 - Dropping test database...

Success.

 - Removing privileges on test database...

Success.

Reloading the privilege tables will ensure that all changes

made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Success.

All done!

mysql -uroot -p

# mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;

# mysql> create user zabbix@localhost identified by '1qaz2wsx';

# mysql> grant all privileges on zabbix.* to zabbix@localhost;

# mysql> set global log_bin_trust_function_creators = 1;

# mysql> SHOW VARIABLES LIKE 'char%';

# mysql> SHOW VARIABLES LIKE 'collation%';

# mysql> quit;

sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

mysql -uroot -p

mysql> set global log_bin_trust_function_creators = 0;

mysql> quit;

sudo nano /etc/zabbix/zabbix_server.conf

修改

DBPassword=1qaz2wsx

sudo nano /etc/zabbix/nginx.conf

  listen          80;

  server_name     192.168.137.243;--zabbix server ip

# sudo systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm

# sudo systemctl enable zabbix-server zabbix-agent nginx php8.3-fpm

http://IP --設定一些規則

http://IP Admin--zabbix  --登入

/usr/share/zabbix/conf/zabbix.conf.php --設定位置

sudo nano /usr/share/zabbix/include/locales.inc.php #打開此文件確認中文已經打開顯示(true)

'zh_TW' => ['name' => _('Chinese (zh_TW)'),     'display' => true],

sudo apt install -y language-pack-zh-hant language-pack-zh-hans #安裝中文

sudo nano /etc/environment 

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

添加以下2行

LANG="zh_TW.UTF-8"

LANGUAGE="zh_TW:zh:en_US:en"

sudo dpkg-reconfigure locales 

sudo systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm

find / -name fonts 

cd /usr/share/zabbix/assets/fonts

ls

graphfont.ttf

sudo wget https://alist.yyzq.cf/d/%20%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%9B%98/software%20/fonts/simkai.ttf #下載新字體

sudo mv graphfont.ttf graphfont.ttfbak #備份原字體

sudo mv simkai.ttf graphfont.ttf #使用新字體

sudo systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm


ubuntu install snmpv3 設定

ubuntu install snmpv3 設定 

cilent端

===========================================

sudo apt install snmp snmpd libsnmp-dev

sudo service snmpd stop

sudo net-snmp-config --create-snmpv3-user -ro -X AES -A SHA -a my_authpass -x my_privpass snmpv3user

sudo net-snmp-create-v3-user -ro -X AES -A SHA -a my_authpass -x my_privpass snmpv3user

/etc/snmp/snmpd.conf

###########################################################################

#

# snmpd.conf

# An example configuration file for configuring the Net-SNMP agent ('snmpd')

# See snmpd.conf(5) man page for details

#

###########################################################################

# SECTION: System Information Setup

#


# syslocation: The [typically physical] location of the system.

#   Note that setting this value here means that when trying to

#   perform an snmp SET operation to the sysLocation.0 variable will make

#   the agent return the "notWritable" error code.  IE, including

#   this token in the snmpd.conf file will disable write access to

#   the variable.

#   arguments:  location_string

sysLocation    Sitting on the Dock of the Bay

sysContact     Me <me@example.org>


# sysservices: The proper value for the sysServices object.

#   arguments:  sysservices_number

sysServices    72

###########################################################################

# SECTION: Agent Operating Mode

#

#   This section defines how the agent will operate when it

#   is running.

# master: Should the agent operate as a master agent or not.

#   Currently, the only supported master agent type for this token

#   is "agentx".

#

#   arguments: (on|yes|agentx|all|off|no)

master  agentx

# agentaddress: The IP address and port number that the agent will listen on.

#   By default the agent listens to any and all traffic from any

#   interface on the default SNMP port (161).  This allows you to

#   specify which address, interface, transport type and port(s) that you

#   want the agent to listen on.  Multiple definitions of this token

#   are concatenated together (using ':'s).

#   arguments: [transport:]port[@interface/address],...

#agentaddress  127.0.0.1,[::1]

###########################################################################

# SECTION: Access Control Setup

#

#   This section defines who is allowed to talk to your running

#   snmp agent.

# Views

#   arguments viewname included [oid]

#  system + hrSystem groups only

view   systemonly  included   .1.3.6.1.2.1.1

view   systemonly  included   .1.3.6.1.2.1.25.1

view   systemview  included   .1

# rocommunity: a SNMPv1/SNMPv2c read-only access community name

#   arguments:  community [default|hostname|network/bits] [oid | -V view]

# Read-only access to everyone to the systemonly view

rocommunity  public default -V systemonly

rocommunity6 public default -V systemonly

# SNMPv3 doesn't use communities, but users with (optionally) an

# authentication and encryption string. This user needs to be created

# with what they can view with rouser/rwuser lines in this file.

#

# createUser username (MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224) authpassphrase [DES|AES] [privpassphrase]

# e.g.

# createuser authPrivUser SHA-512 myauthphrase AES myprivphrase

#

# This should be put into /var/lib/snmp/snmpd.conf

#

# rouser: a SNMPv3 read-only access username

#    arguments: username [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]

rouser authPrivUser authpriv -V systemonly

# include a all *.conf files in a directory

includeDir /etc/snmp/snmpd.conf.d

存檔後

sudo systemctl restart snmpd

================================================================

zabbix server

sudo apt install snmp snmpd libsnmp-dev

看是否抓到資料

sudo snmpwalk -v 3 -a SHA -A my_authpass -x AES -X my_privpass -l authpriv -u snmpv3user guestip | head -10

2024年6月25日 星期二

ubuntu 修改 hostname

1.sudo hostnamectl set-hostname new_hostname

2.sudo sed -i "s/old_hostname/new_hostname/g" /etc/hosts

重新開機即可

2024年5月28日 星期二

將 HuggingFace 模型轉換為 GGUF

 將 HuggingFace 模型轉換為 GGUF

1.安裝python 3.11.9,不要用python 3.12版

2.安裝git

3.重新開機

4.git clone https://github.com/ggerganov/llama.cpp.git

5.cd llama.cpp 

  pip install -r requirements.txt

6.測試llama.cpp

  python convert.py -h

出現:ImportError: DLL load failed while importing _sentencepiece: 找不到指定的模組。

安裝Microsoft visual c++ 2015 redistributable(x64)

https://www.microsoft.com/en-us/download/confirmation.aspx?id=48145

安裝後在執行一次python convert.py -h

7.將下載 HuggingFace 模型目錄複製到llama.cpp目錄下

python convert.py c:\llama.cpp\INX-TEXT_Bailong-instruct-7B --outfile bailong-instruct-7b-f16.gguf --outtype f16

轉出來大小約13.5G,還是太大

8.Windows使用llama.cpp量化(quantize)前準備

llama.cpp量化(quantize) 前要先做make。


9.下載w64devkit-1.xxx並執行w64devkit.exe。


  https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#build


  https://github.com/skeeto/w64devkit/releases/tag/v1.23.0

下載w64devkit-1.23.0.zip並解壓

10.進入w64devkit目錄並執行w64devkit.exe

11.然後進入llama.cpp目錄 cd /llama.cpp

12.執行make

   會跑一下下,完成後執行exit跳回windos的命令提示字元CMD下

   quantize.exe就會生成在llama.cpp的資料夾下

# 以q4_k_m 為例

# q4_k_m:提供了不同程度的準確性和推理速度,適合需要平衡資源使用的場景。


13.cd llama.cpp 

14.執行.\quantize.exe bailong-instruct-7b-f16.gguf bailong-instruct-7b-q4_k_m.gguf q4_k_m


當中數字是代表量化的 bits 設定;以下是參考他對於不同量化的推薦和說明:


q2_k:特定張量 (Tensor) 采用較高的精度設置,而其他的則保持基礎級別。

q3_k_l、q3_k_m、q3_k_s:這些變體在不同張量上使用不同級別的精度,從而達到性能和效率的平衡。

q4_0:這是最初的量化方案,使用 4 位精度。

q4_1和q4_k_m、q4_k_s:這些提供了不同程度的準確性和推理速度,適合需要平衡資源使用的場景。

q5_0、q5_1、q5_k_m、q5_k_s:這些版本在保證更高準確度的同時,會使用更多的資源並且推理速度較慢。

q6_k和q8_0:這些提供了最高的精度,但是因為高資源消耗和慢速度,可能不適合所有用戶。

如果追求較低成本和保持模型效能的情況推薦使用用 Q5_K_M,如果想更節省 RAM,則可以考慮 Q4_K_M。一般來說,帶有 K_M 的版本會比 K_S 的版本表現更佳。不過不建議使用 Q2_K 或 Q3_* 等版本,因為它們會顯著降低模型的整體性能。


----------------------------------------------------------------------------------------------

如何下載HuggingFace的模組

1.進入HuggingFace想要處理的模組例如INX-TEXT/Bailong-instruct-7B

那就去HuggingFace網頁搜尋INX-TEXT/Bailong-instruct-7B

2.進入後點選Files,在右邊有3個.,點選後出現clone repository,會出現如何下載

3.git lfs install

4.git clone https://huggingface.co/INX-TEXT/Bailong-instruct-7B

會出現要HuggingFace的帳號及密碼,輸入後才可下載--不能使用因為要你的token

4-1.使用download.py,或者一個個去下載


from huggingface_hub import snapshot_download


model_id = "INX-TEXT/Bailong-instruct-7B" # hugginFace's model name

snapshot_download(

    repo_id=model_id, 

    local_dir="INX-TEXT_Bailong-instruct-7B",

    local_dir_use_symlinks=False,

    revision="main",

    use_auth_token="<YOUR_HF_ACCESS_TOKEN>")


YOUR_HF_ACCESS_TOKEN--使用帳號進入後在settings--Access Tokens中去設定

執行 python download.py


5.上傳轉檔及量化後的 GGUF 模型到 Huggingface Repo

避免透過 git pull 來上傳大型的檔案下來寫一個 upload.py


from huggingface_hub import HfApi

import os


api = HfApi()

HF_ACCESS_TOKEN = "<YOUR_HF_WRITE_ACCESS_TOKEN>"

model_id = "NeroUCH/Bailong-instruct-7B-GGUF"


api.create_repo(

    model_id,

    exist_ok=True,

    repo_type="model", # 上傳格式為模型

    use_auth_token=HF_ACCESS_TOKEN,

)

# upload the model to the hub

# upload model name includes the Bailong-instruct-7B in same folder

for file in os.listdir():

    if file.endswith(".gguf"):

        model_name = file.lower()

        api.upload_file(

            repo_id=model_id,

            path_in_repo=model_name,

            path_or_fileobj=f"{os.getcwd()}/{file}",

            repo_type="model", # 上傳格式為模型

            use_auth_token=HF_ACCESS_TOKE)


參考:

https://medium.com/@NeroHin/%E5%B0%87-huggingface-%E6%A0%BC%E5%BC%8F%E6%A8%A1%E5%BC%8F%E8%BD%89%E6%8F%9B%E7%82%BA-gguf-%E4%BB%A5inx-text-bailong-instruct-7b-%E7%82%BA%E4%BE%8B-a2cfdd892cbc


https://medium.com/@zhanyanjiework/%E5%B0%87huggingface%E6%A8%A1%E5%9E%8B%E8%BD%89%E6%8F%9B%E7%82%BAgguf%E5%8F%8A%E4%BD%BF%E7%94%A8llama-cpp%E9%80%B2%E8%A1%8C%E9%87%8F%E5%8C%96-%E4%BB%A5taide-b-11-0-0%E6%A8%A1%E5%9E%8B%E7%82%BA%E4%BE%8B-%E9%83%A8%E7%BD%B2lm-studio-366bc4bcb690

2024年5月14日 星期二

安裝 Windows 11 時跳過網路設定

 需要先按下鍵盤的「Shift + F10」、理論上他會開啟一個命令提示字元的視窗。這時候在裡面輸入「oobe\bypassnro」後按下 Enter,系統應該就會重開,重新開始初始化的流程

2024年5月7日 星期二

完全關閉Windows Hyper-V

1. 使用管理員權限開啟CMD或PowerShell

2. 執行以下指令
------------------------------------------
bcdedit /set hypervisorlaunchtype off

------------------------------------------
3. 重開機

參考:https://home.gamer.com.tw/artwork.php?sn=4516067