Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux? / 8 сообщений из 8, страница 1 из 1
19.08.2016, 19:54
    #39294773
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
Здравствуйте.

Возникло желание собирать статистику CPU с удаленного сервера Windows.

Покопался в интернете и нашел такой пример
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarLoader;
import org.hyperic.sigar.SigarException;

public class CpuInfo extends SigarCommandBase {

    public boolean displayTimes = true;
    
    public CpuInfo(Shell shell) {
        super(shell);
    }

    public CpuInfo() {
        super();
    }

    public String getUsageShort() {
        return "Display cpu information";
    }

    private void output(CpuPerc cpu) {
        println("User Time....." + CpuPerc.format(cpu.getUser()));
        println("Sys Time......" + CpuPerc.format(cpu.getSys()));
        println("Idle Time....." + CpuPerc.format(cpu.getIdle()));
        println("Wait Time....." + CpuPerc.format(cpu.getWait()));
        println("Nice Time....." + CpuPerc.format(cpu.getNice()));
        println("Combined......" + CpuPerc.format(cpu.getCombined()));
        println("Irq Time......" + CpuPerc.format(cpu.getIrq()));
        if (SigarLoader.IS_LINUX) {
            println("SoftIrq Time.." + CpuPerc.format(cpu.getSoftIrq()));
            println("Stolen Time...." + CpuPerc.format(cpu.getStolen()));
        }
        println("");
    }

    public void output(String[] args) throws SigarException {
        org.hyperic.sigar.CpuInfo[] infos =
            this.sigar.getCpuInfoList();

        CpuPerc[] cpus =
            this.sigar.getCpuPercList();

        org.hyperic.sigar.CpuInfo info = infos[0];
        long cacheSize = info.getCacheSize();
        println("Vendor........." + info.getVendor());
        println("Model.........." + info.getModel());
        println("Mhz............" + info.getMhz());
        println("Total CPUs....." + info.getTotalCores());
        if ((info.getTotalCores() != info.getTotalSockets()) ||
            (info.getCoresPerSocket() > info.getTotalCores()))
        {
            println("Physical CPUs.." + info.getTotalSockets());
            println("Cores per CPU.." + info.getCoresPerSocket());
        }

        if (cacheSize != Sigar.FIELD_NOTIMPL) {
            println("Cache size...." + cacheSize);
        }
        println("");

        if (!this.displayTimes) {
            return;
        }

        for (int i=0; i<cpus.length; i++) {
            println("CPU " + i + ".........");
            output(cpus[i]);
        }

        println("Totals........");
        output(this.sigar.getCpuPerc());
    }

    public static void main(String[] args) throws Exception {
        new CpuInfo().processCommand(args);
    }
}



НО он работает только на локальном сервере.
Подскажите каким образом его возможно использовать для съема значений с удаленного сервера windows или linux?

Либо может быть у вас есть другие варианты по-лучше. Буду рад их рассмотреть.

Заранее благодарю за ответы.
...
Рейтинг: 0 / 0
19.08.2016, 22:21
    #39294802
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
drno,
именно программировать?
drnoЛибо может быть у вас есть другие варианты по-лучше.
...
Рейтинг: 0 / 0
20.08.2016, 10:25
    #39294879
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
Для windows и Linux API будет разный. IMHO.

Лет 8 назад я снимал загрузку CPU с HP-Unix кластера через ICMP-протокол.
Особых прав для этого не требовалось. ICMP был открыт для всех.

Для Windows-серверов - случай тяжелый. Скорее всего понадобятся права
на Performance Log Users.
...
Рейтинг: 0 / 0
20.08.2016, 14:58
    #39294950
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
И вот опять хочется спросить: нафига решать то, что уже решено много лет назад?
Есть разные варианты SNMP-мониторинга - и коммерческие и бесплатные.
Уж не помню, как оно было в Windows 2000 (1999 год выпуска), но Windows XP (2001 год выпуска) и далее есть штатный SNMP-агент, который позволяет много чего мониторить.
...
Рейтинг: 0 / 0
21.08.2016, 02:45
    #39295051
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
Видимо был не верно понят вопрос. Интересует модуль на java, который сможет выполнить съем данных по CPU с удаленного сервера.
...
Рейтинг: 0 / 0
21.08.2016, 13:25
    #39295112
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
drno,
Ну дак тут народ практики, чтобы над всякой фигней думать.
К вам же тоже вопрос был.
Однако вы ноль ответов.
...
Рейтинг: 0 / 0
21.08.2016, 15:28
    #39295126
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
Petro123,

именно программировать, как вариант на java ))
три для назад сам был уверен, что эта задача была уже решена давным давно и не вызовет никаких сложностей.
НО к моему удивлению оказалось не все так радужно, поэтому и пришлось потревожить вопросом многоуважаемых форумчан.
Надеюсь я смог ответить на вопросы.

на текущий момент удалось найти решение для удаленного Linux сервера

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
package com.yeepay.g3.app.cd.utils;

import com.jcraft.jsch.*;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {

private String ipAddress;

private String username;

private String password;

public static final int DEFAULT_SSH_PORT = 22;

public Test(final String ipAddress, final String username, final String password) {
    this.ipAddress = ipAddress;
    this.username = username;
    this.password = password;
}

public int execute(final String command) {
    int returnCode = 0;
    JSch jsch = new JSch();

    try {
        jsch.setKnownHosts("/Users/wtnull/.ssh/known_hosts");
        // Create and connect session.
        Session session = jsch.getSession(username, ipAddress, DEFAULT_SSH_PORT);
        session.setPassword(password);
        session.connect();

        // Create and connect channel.
        Channel channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand(command);

        channel.setInputStream(null);
        BufferedReader input = new BufferedReader(new InputStreamReader(channel.getInputStream()));

        channel.connect();
        System.out.println("The remote command is: " + command);

        // Get the output of remote command.
        String line;
        while ((line = input.readLine()) != null) {
            System.out.println(line);
        }
        input.close();

        // Get the return code only after the channel is closed.
        if (channel.isClosed()) {
            returnCode = channel.getExitStatus();
        }

        // Disconnect the channel and session.
        channel.disconnect();
        session.disconnect();
    } catch (JSchException | IOException e) {
        e.printStackTrace();
    }
    return returnCode;
}

public static void main(final String [] args) throws Exception {
    Test sshExecutor = new Test("172.17.102.180", "root", "123456");
    sshExecutor.execute("free -m");
}

}
...
Рейтинг: 0 / 0
21.08.2016, 15:33
    #39295128
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux?
drnoВидимо был не верно понят вопросВопрос был понят верно. Это ответ не был воспринят.
Но если вам так трудно, могу ещё " подсказать ".
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно снять значение нагрузки CPU с удаленного сервера windows или linux? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]