7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

browser-use + ollamaでローカルサイト(Zabbix)を操作してみた

Last updated at Posted at 2025-02-12

前回に引き続き、browser-use関連です。自宅にGPUもあるんだしせっかくならbrowser-useをローカルLLMで試してみます。browser-use-webuiを利用する例は、ググればたくさんでてくるのですが、逆にbrowser-use-webuiを使わないパターンはなさそうだったので、トライすることにしてみました。また今回はコンテナ上で起動しているZabbixをbrowser-useを使って操作しています。

環境イメージ

image.png

前回構成した環境をそのまま利用していますので、まずは下記記事をご確認ください。

前提

OS:Ubuntu 22.04.5 LTS
Docker version: 27.3.1, build ce12230
Docker Compose version: v2.29.7
GPU: GEFORCE RTX 4090
NVIDIA-SMI: 560.35.03
Driver Version: 560.35.03
CUDA Version: 12.6
nvidia-container-toolkit:1.17.2
LLM:qwen2.5:32b-instruct-q4_K_M
Zabbix:7.2.3

1. Zabbixサーバ用コンテナ作成

任意のディレクトリにdocker-compose.ymlを作成します。

docker-compose.yml
services:
  mysql:
    image: mysql:8.0
    container_name: zabbix-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
    volumes:
      - mysql_data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    networks:
      - zabbix-net

  zabbix-server:
    image: zabbix/zabbix-server-mysql:latest
    container_name: zabbix-server
    restart: always
    environment:
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
    depends_on:
      - mysql
    ports:
      - "10051:10051"
    networks:
      - zabbix-net

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:latest
    container_name: zabbix-web
    restart: always
    environment:
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: "Asia/Tokyo"
    depends_on:
      - mysql
      - zabbix-server
    ports:
      - "8080:8080"
    networks:
      - zabbix-net

  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    restart: always
    environment:
      ZBX_HOSTNAME: "zabbix-agent"
      ZBX_SERVER_HOST: "zabbix-server"
    depends_on:
      - zabbix-server
    networks:
      - zabbix-net

networks:
  zabbix-net:
    driver: bridge

volumes:
  mysql_data:

Zabbix関連のコンテナを起動します。

docker-compose up -d

このままではZabbix-serverが起動しない為、必要なデータを公式サイトからダウンロードし、zabbix-mysqlコンテナに転送します。

wget https://cdn.zabbix.com/zabbix/sources/stable/7.2/zabbix-7.2.3.tar.gz
tar zxvf zabbix-7.2.3.tar.gz
cd zabbix-7.2.3/database/mysql/
docker cp images.sql zabbix-mysql:/tmp/
docker cp data.sql zabbix-mysql:/tmp/

zabbix-mysqlコンテナにログインして、転送したsqlを適用します。(パスワードはzabbix_password)

docker exec -it zabbix-mysql /bin/bash
mysql -u root -p zabbix < /tmp/images.sql
mysql -u root -p zabbix < /tmp/data.sql
exit

Zabbix関連のコンテナステータスがすべてUPとなっていることを確認します。

root@docker001:~# docker ps
CONTAINER ID   IMAGE                                  COMMAND                  CREATED          STATUS                  PORTS                                                 NAMES
13927cb8f1c2   ollama/ollama                          "/bin/ollama serve"      54 minutes ago   Up 50 minutes           0.0.0.0:11434->11434/tcp, :::11434->11434/tcp         ollama
96bbad4fb83e   zabbix/zabbix-web-nginx-mysql:latest   "docker-entrypoint.sh"   20 hours ago     Up 20 hours (healthy)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 8443/tcp   zabbix-web
57975519b94f   zabbix/zabbix-agent:latest             "/usr/bin/docker-ent…"   20 hours ago     Up 20 hours             10050/tcp                                             zabbix-agent
50a7e97e17e4   zabbix/zabbix-server-mysql:latest      "/usr/bin/docker-ent…"   20 hours ago     Up 20 hours             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp         zabbix-server
557f7db4b1f1   mysql:8.0                              "docker-entrypoint.s…"   20 hours ago     Up 20 hours             3306/tcp, 33060/tcp                                   zabbix-mysql

2. ollama用コンテナ作成

次にローカルLLMを利用するためにollamaコンテナを作成します。

docker run -d --runtime=nvidia --gpus=all --ulimit memlock=-1:-1 -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

コンテナ作成の次はモデルをダウンロードします。(qwen2.5:32b-instruct-q4_K_Mは19GBあります)

docker exec -it ollama /bin/bash
ollama pull qwen2.5:32b-instruct-q4_K_M

ollama listコマンドでモデル一覧からqwen2.5:32b-instruct-q4_K_Mが存在していることを確認します。

ollama list
NAME                           ID              SIZE      MODIFIED
qwen2.5:32b-instruct-q4_K_M    9f13ba1299af    19 GB     4 seconds ago

3. Browser_UseでZabbix画面を操作

Zabbixおよびollamaが準備できましたので、Browser_Useを実行するコンテナにログインしましょう。

docker exec -it ubuntu-rdp-desktop /bin/bash
cd ~
source browser_use/bin/activate

BrowserUse実行用コードを作成します。Taskに日本語を設定すると失敗するため、指示は英語にしました。

ollama_zabbix.py
import asyncio
import certifi
import os
from browser_use import Agent
from browser_use.agent.views import AgentHistoryList
from langchain_ollama import ChatOllama

os.environ['REQUESTS_CA_BUNDLE'] = './myCA.pem'          # Proxy CA

os.environ['http_proxy'] = 'http://10.x.x.x:8080'        # Proxyアドレス
os.environ['https_proxy'] = 'http://10.x.x.x:8080'       # Proxyアドレス
os.environ['NO_PROXY'] = 'localhost,127.0.0.1,10.x.x.x'  # ローカルアドレスをProxy経由にさせない

certifi.where = lambda: '/etc/ssl/certs/ca-certificates.crt'

async def run_search() -> AgentHistoryList:
    agent = Agent(
        task=(
            "Please access 'http://10.x.x.x:8080/' and log in with Username: Admin, Password: zabbix to obtain the site title."
        ),
        llm=ChatOllama(
            model='qwen2.5:32b-instruct-q4_K_M',
            base_url="http://10.x.x.x:11434",           # Dockerホストのアドレス
            num_ctx=32000,
        ),
    )
    await agent.run()

if __name__ == '__main__':
    asyncio.run(run_search())

ではDesktop上で実行しましょう

python3 ollama_zabbix.py

Zabbixログインページが表示されます。

image.png

しばらくすると、IDとパスワードが自動入力されて
image.png

ログイン画面が表示されます。
image.png

タスク指示にあるとおり、サイトのタイトルを取得していることがわかります。
image.png

ollamaコンテナのログをモニタリングした結果は以下の通りでした。

[GIN] 2025/02/12 - 21:53:20 | 200 | 33.282570628s |      172.17.0.1 | POST     "/api/chat"
[GIN] 2025/02/12 - 21:53:58 | 200 | 36.270584965s |      172.17.0.1 | POST     "/api/chat"
[GIN] 2025/02/12 - 21:54:50 | 200 | 44.702575504s |      172.17.0.1 | POST     "/api/chat"
7
6
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
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?