作成者別アーカイブ: hirokimura

Azure Resource Usage APIで課金情報を取得する

| コメントをどうぞ

Azureの課金APIがリリースされていたので触ってみました。

Microsoft Azure リソースの消費を把握する
https://azure.microsoft.com/ja-jp/documentation/articles/billing-usage-rate-card-overview/

Azure Billing REST API Reference (Preview)
https://msdn.microsoft.com/library/azure/1ea5b323-54bb-423d-916f-190de96c6a3c

手順

  1. Azure AD applicationの作成 と アクセストークンの作成
  2. DHCでリクエストを実行

続きを読む

HTMLとJavaScriptでEC2インスタンスを起動する

| コメントをどうぞ

AWSのSDKは様々な言語向けに用意されていますが、サーバーサイドの実装なしでAWSのAPIを叩く場合の選択肢として、AWS SDK for JavaScriptがあります。
http://aws.amazon.com/jp/tools/

ただ、他のSDKと違って対応しているサービスが限られています。
利用可能なサービスはS3、SQS、SNS、DynamoDBなどで、EC2は対象ではありませんでした。

EC2をサポート

6月24日のリリースで、In the BrowserにEC2がこっそり追加されていました。
http://aws.amazon.com/releasenotes/SDK/JavaScript/5873934951898767

6月18日のリリースにはEC2はありませんね。
http://aws.amazon.com/releasenotes/SDK/JavaScript/3577030144306744

HTMLファイルだけでEC2を起動

続きを読む

GoogleのAPIを利用したアプリケーションをGoogle Apps Marketplace (Chrome Web Store)で公開する方法 その2

| 1件のフィードバック

前回に引き続き、Google Apps Marketplaceへのアプリケーションの公開手順を紹介します。

手順

  1. 利用するAPIの登録
  2. アプリケーションの開発
  3. Chrome Web Storeへの登録
  4. インストールのテスト
  5. アプリケーションの公開とレビュー申請

今回は3から5の手順です。

注意事項

アプリケーションをGoogle Apps Marketplaceで公開することが目的ですが、アプリケーションの登録はChrome Web Storeのディベロッパーダッシュボードから行います。
また、アプリケーションの公開に伴い、初回の公開時のみ5ドルの支払いが必要となります。

続きを読む

GoogleのAPIを利用したアプリケーションをGoogle Apps Marketplace (Chrome Web Store)で公開する方法 その1

| コメントをどうぞ

Googleが公開しているアプリケーションのプラットフォームとして、
・Google Apps Marketplace(Google Apps for Work利用者向け)
・Chrome Web Store(Googleの個人アカウント向け)
があります。

現在私たちはGoogle Apps向けのポータルサービスとして、infoScoop for Google AppsをGoogle Apps Marketplaceで公開しています。
http://www.infoscoop4g.com/ja/

今回と次回の2回に分けて、GoogleのAPIを利用したアプリケーションを公開する方法を紹介します。
Google Apps Marketplaceに公開する場合もChrome Web Storeに公開する場合も、基本的な流れは同じです。
参考: https://developers.google.com/apps-marketplace/

手順

公開までの手順は大きく5つに分かれています。

  1. 利用するAPIの登録
  2. アプリケーションの開発
  3. Chrome Web Storeへの登録
  4. インストールのテスト
  5. アプリケーションの公開とレビュー申請

今回は1と2の手順です。

続きを読む

New RelicのJavaエージェントのインストールでエラー

| コメントをどうぞ

今回はNew RelicのJavaエージェントをインストールしてみました。

環境

  • OS: Amazon Linux
  • Tomcat7: yumでインストール

公式ドキュメント

以下のドキュメントを参考にインストールを行いました。
https://docs.newrelic.com/docs/agents/java-agent/installation/java-agent-manual-installation

実行した手順

インストールモジュールをダウンロード

New Relicにログインしてダウンロードします。

モジュールを解凍してtomcatのHOMEに置きます。

# unzip newrelic-java-3.12.0.zip -d /usr/share/tomcat7

インストールを実行

# cd /usr/share/tomcat7/newrelic
# java -jar newrelic.jar install

エラー

Dec 5, 2014 13:14:07 +0900 [28863 1] com.newrelic INFO: Agent is using Logback
***** ( ( o))  New Relic Java Agent Installer
***** Installing version 3.12.0 ...
File /usr/share/tomcat7/bin/catalina.sh does not exist, so it can't become an EditableFile.
No need to create New Relic configuration file because:
 .:. A config file already exists: /usr/share/tomcat7/newrelic/newrelic.yml
***** Install incomplete
***** Next steps:
For help completing the install, see https://newrelic.com/docs/java/new-relic-for-java

/usr/share/tomcat7/bin/catalina.shがないためにエラーが出ました。
tomcatをyumでインストールした場合、自動でサービスが/etc/init.d/tomcat7として保存されるため、catalina.shは存在しません。

catalina.shの作成

今回はパッケージされたTomcatのcatalina.shからコピーして、
/usr/share/tomcat7/bin/catalina.sh を作成しました。

再度実行

# java -jar newrelic.jar install

インストールが完了しました。

NR_JARとCATALINA_OPTSの転記

/usr/share/tomcat7/bin/catalina.shを見てみると、以下の行が追記されていました。

# ---- New Relic switch automatically added to start command on 2014 Dec 05, 13:51:37
NR_JAR=/usr/share/tomcat7/newrelic/newrelic.jar; export NR_JAR
CATALINA_OPTS="$CATALINA_OPTS -javaagent:$NR_JAR"; export CATALINA_OPTS

上記をTomcatの起動時に読み込まれる任意のファイルに記述します。
その後Tomcatを起動すると、New RelicのJava監視が開始されました。

Amazon Linux + Tomcat7のJDBC接続でBasicDataSourceFactoryがないというエラー

| コメントをどうぞ

Amazon LinuxにTomcat7をyumでインストールして、MySQLと接続するアプリケーションを起動したところ、以下のようなエラーが出ました。

Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

参考URL

解決策として、フォーラムの以下の投稿が参考になりました。
https://forums.aws.amazon.com/thread.jspa?messageID=394470

続きを読む

Google Apps Marketplace APIのCustomerLicense

| 1件のフィードバック

Marketplaceで公開している自分のアプリケーションが、あるドメインでインストールされているかをチェックするAPIです。

Google Apps Marketplace APIのCustomerLicense
https://developers.google.com/apps-marketplace/v2/reference/customerLicense

リファレンスページで試すが403エラー

以下のページの Try it! で試したのですが、403エラーが出てしまいました。
https://developers.google.com/apps-marketplace/v2/reference/customerLicense/get

403 Forbidden

Cache-Control:  private, max-age=0
Content-Encoding:  gzip
Content-Length:  135
Content-Type:  application/json; charset=UTF-8
Date:  Fri, 07 Nov 2014 04:43:55 GMT
Expires:  Fri, 07 Nov 2014 04:43:55 GMT
Server:  GSE

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "forbidden",
        "message": "Not authorized to access the application ID"
      }
    ],
    "code": 403,
    "message": "Not authorized to access the application ID"
  }
}

Stack Overflowの以下の投稿を参考にソースコードを作成したところ、APIを利用してアプリケーションのインストール状況を確認できました。
http://stackoverflow.com/questions/21410538/error-consuming-customerlicense-app-marketplace-with-service-account-oauth2

ソースコード

以下のパラメータを任意に設定します。

  • SERVICE_ACCOUNT_EMAIL: Service Accountのメールアドレス
  • SERVICE_ACCOUNT_PKCS12_FILE_PATH: ダウンロードしたP12ファイルのパス
  • APPLICATION_ID: Google Developer ConsoleのProject Number(数字12桁)
  • CUSTOMER_ID: インストール状況をチェックするドメイン名
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Collections;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;

public class CustomerLicense {
    public static void main(String[] args) throws GeneralSecurityException, IOException {
        String SERVICE_ACCOUNT_EMAIL = "103425845188-onbg603ons33o9becsffdauc6akcb548@developer.gserviceaccount.com";
        String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "*****.p12";
        String SCOPE = "https://www.googleapis.com/auth/appsmarketplace.license";
        String APPLICATION_ID = "103425845188";
        String CUSTOMER_ID = "infoscoop.org";

        GoogleCredential credential = new GoogleCredential.Builder()
        .setTransport(new NetHttpTransport())
        .setJsonFactory(new JacksonFactory())
        .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
        .setServiceAccountScopes(Collections.singleton(SCOPE))
        .setServiceAccountPrivateKeyFromP12File(new File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
        .build();
        credential.refreshToken();
        String token = credential.getAccessToken();

        URL url = new URL("https://www.googleapis.com/appsmarket/v2/customerLicense/"+ APPLICATION_ID + "/" + CUSTOMER_ID);

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Authorization", "Bearer "+token);
        if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
            try {
                    InputStreamReader isr = new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8);
                    BufferedReader reader = new BufferedReader(isr);
                    String line;
                    while ((line = reader.readLine()) != null) {
                        System.out.println(line);
                    }
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
            }
        }
    }
}

実行結果

{"kind":"appsmarket#customerLicense","id":"103425845188/infoscoop.org","applicationId":"103425845188","customerId":"infoscoop.org","state":"ACTIVE","editions":[{"editionId":"default_edition","seatCount":-1}]}

WordPressを運用しているサーバーのApacheをZabbixで監視する方法

| コメントをどうぞ

前回は、ZabbixでApacheを監視するための設定手順を紹介しました。
今回は、Wordpress(このブログサイト)を運用しているサーバー上での監視設定です。

監視対象サーバーの環境

  • OS: Amazon Linux
  • zabbix-agent: 2.2.5
  • httpd: 2.2.29
  • WordPress: 4.0

手順

前回の記事の設定の続きです。

server-statusをリダイレクトをしないように設定

Apacheの監視設定をしたときにserver-statusが取得できませんでした。

サーバー上で実行したコマンド

curl http://localhost/server-status

結果

< !DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>

</head><body>
<h1>Found</h1>
The document has moved <a href="https://localhost/index.php">here</a>.
<hr />
<address>Apache/2.2.29 (Amazon) Server at localhost Port 80</address>
</body></html>

どうやらWordpressの設定でリダイレクトされているようです。

続きを読む

ZabbixでApacheを監視するための設定手順

| コメントをどうぞ

今回は、ZabbixでApacheを監視するための設定手順です。

監視対象サーバーの環境

  • OS: Amazon Linux
  • zabbix-agent: 2.2.5
  • httpd: 2.2.27

手順

mod_statusを有効にする

監視対象サーバーのmod_statusを有効にして、http://localhost/server-statusで稼働状況を確認できるようにします。

httpd.confを2箇所編集します。

vi /etc/httpd/conf/httpd.conf

1 以下の行のコメントアウトを解除します。

ExtendedStatus On

2 以下のコメントアウトを解除して一部修正します。

Before

#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

After

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

ここでは、ローカルからしかアクセスできないように設定しています。
Apacheを再起動します。

/etc/init.d/httpd restart

続きを読む

iframeでGoogleサイトのページを表示する方法

| コメントをどうぞ

2014年の4月末~5月頭にGoolgeサイトの仕様が変更されたため、
現在iframeにGoogleサイトのページを埋め込むと真っ白になってしまいます。

今回はiframeで表示するための設定手順を紹介します。

設定手順

1. iframeに表示したいサイトをブラウザで開く

続きを読む